Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 38
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027

    [c++] ordinamento select sort (ingenuo precisiamo)

    ciao a tutti
    ho un problema
    ho fatto questo codice però mi da errore nella parte di assegnazione

    variabili:

    codice:
    int main ()
    {
        int menu,n_iscr,a=0,t=0,s=0,j;
        string cerca_cognome,temp;
        struct iscritto
        {
               char nome[20],cognome[20],abbonamento;
               int eta;
        };
        cout<<"inserisci quanti iscritti ci sono\n";
        cin>>n_iscr;
        iscritto tot_iscr[n_iscr];
    codice:
                    case 1: 
                         for(int i=0;i<n_iscr-1;i++)
                         {
                                 j=i+1;
                                 do
                                 {
                                       if(tot_iscr[i].cognome<tot_iscr[j].cognome)
                                       {
                                                                  temp=tot_iscr[i].cognome;
                                                                  tot_iscr[i].cognome=tot_iscr[j].cognome;
                                                                  tot_iscr[j].cognome=temp;
                                       }
                                       j=j+1;
                                 }while(j<n_iscr);
                         }
                         cout<<"iscritti ordinati per cognome: \n";
                         for(int i=0;i<n_iscr;i++)
                         {
                                 cout<<tot_iscr[i].cognome<<"\n";
                         }
                                                                                                             
                         break;

    mi potete aiutare? è urgente grazie!

    ah l'errore è questo:
    ISO C++ FORBIDS assignment in arrays

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    temp è un oggetto string mentre cognome e nome sono array di char.
    Non puoi assegnare l'uno all'altro.

    Usa le string anche per cognome e nome.


    P.S. Non c'è nulla di *urgente* in un forum ... si risponde quando e se si vuole/può.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    si ma se io inserisco i valori dentro la stringa nome e dentro la stringa cognome? cioè devo inserirle per forza con un ciclo for dentro array di char, se invece nome e cognome le dichiaro string poi l'inserimento non mi funziona più

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non ho capito perché l'inserimento non funziona (anche perché non c'è il codice) ...

    Usa la cin per l'inserimento di nome e cognome ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    allora
    io ho fatto così
    per esempio...
    mi si blocca al cin.getline diciamo il compiler mi segna quella riga evidenziata di rosso, cosa che prima di cambiare da char a string i vettori di nome e cognome non succedeva ora invece succede

    il codice:

    codice:
    #include <cstring>
    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        int n_stud,scelta,j;
        string temp;
        struct studente
        {
               string nome[25],cognome[25];
               char corso[11];
               int voto,lode,anni_iscr;
        };
        cout<<"inserisci il numero di studenti neolaureati\n";
        cin>>n_stud;
        studente tot_stud[n_stud];
        cout<<"per inserire i dati di tutti i "<<n_stud<<" studenti premere: 1\n";
        cout<<"per mostrare tutti gli studenti in ordine alfabetico rispetto al cognome premere: 2\n";
        cout<<"per ricercare e mostrare i migliori studenti premere: 3\n";
        cout<<"per mostrare gli studenti che hanno avuto 110 o 110 e lode premere: 4\n";
        cout<<"per mostrare la media del corso di laurea premere: 5\n";
        cout<<"per ordinare in maniera decrescente rispetto al voto ogni corso di laurea premere: 6\n";
        cout<<"per uscire dal programma premere: 0\n";
        cin>>scelta;
        cin.ignore();
        do{
        switch(scelta)
        {
                      case 1:              
        for(int i=0;i<n_stud;i++)
        {        
        cout<<"inserisci il cognome dello studente\n";
        cin.getline(tot_stud[i].cognome,25);
        cout<<"inserisci il nome dello studente\n";
        cin.getline(tot_stud[i].nome,25);
        cout<<"inserisci il corso a cui e' iscritto (informatica,elettronica,civile,meccanica,elettrica,gestionale)\n";
        cin>>tot_stud[i].corso;
        cout<<"inserisci il suo voto di laurea (numero intero)\n";
        cin>>tot_stud[i].voto;
        cout<<"digita 1 se lo studente ha ricevuto una lode, digita 0 se non ne ha ricevuta\n";
        cin>>tot_stud[i].lode;
        if(tot_stud[i].lode==1)
        { 
                                cout<<"lo studente ha ricevuto una lode\n"; 
        }
        else 
        { 
             cout<<"lo studente non ha ricevuto nessuna lode\n"; 
        }
        cout<<"indica in quanti anni lo studente ha conseguito la laurea\n";
        cin>>tot_stud[i].anni_iscr;
        cin.ignore();
        }
        break;
        case 2:
             for(int i=0;i<n_stud-1;i++)
             {
             j=i+1;
             do
             {
             if(tot_stud[i].cognome<tot_stud[j].cognome)
             {
             temp=tot_stud[i].cognome;
             strcpy(tot_stud[i].cognome,tot_stud[j].cognome);
             tot_stud[j].cognome=temp;
             }
             j=j+1;
             }while(j<n_stud);
             }
             cout<<"iscritti ordinati per cognome: \n";
             for(int i=0;i<n_stud;i++)
             {
             cout<<tot_stud[i].cognome<<"\n";
             }
             break;
    }}while(scelta!=0); 
        system("pause");
        return 0;    
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Di quale riga "in rosso" parli?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    mi evidenzia in rosso

    cin.getline(tot_stud[i].cognome,25);

    questas riga e il devc++ mi dice:

    59 C:\Users\francesco\Desktop\lezioni_c++\lauree.cpp no matching function for call to `std::basic_istream<char, std::char_traits<char> >::getline(std::string[25], int)'

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Beh ... è ovvio ...


    Ti avevo detto di usare una string non un vettore di 25 string !

    Quindi, nella struttura deve essere

    string cognome, nome;

    e nell'input

    cin >> tot_stud[i].cognome;

    cin >> tot_stud[i].nome;


    Fai ancora molta confusione con le caratteristiche di base del linguaggio (array, oggetti) ... secondo me dovresti rivedere queste cognizioni dal libro ancora un po' ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    si ma il problema è che l'esercizio dice espressamente nel testo che le stringhe devono essere lunghe massimo 25!

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma allora non è un esercizio C++ ma C ... tu hai indicato nel titolo che era codice C++.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.