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; }

Rispondi quotando