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