Salve ragazzi,
sono Enzo, mi presento,
Da Ottobre ho iniziato la miaa avventura con il c++ per motivi di studio, sono uno studente, lavoratore.
MI trovo davanti ad un problema che non so prorprio come risolvere.
Problema iniziale: attraverso l'uso di struct inserire in una tabella max 50 esami ed ogin esame deve riportare titolo, voto, data esame.
#include <cstdlib>
#include <iostream>
# include <cstring>
using namespace std;
const int max_esami=15;
const int max_nome_esame=10;
struct data{
int g;
int m;
int a;
};
struct dati_esame{
char nome[max_nome_esame];
int voto;
bool lode;
data data_esame;
};
int main(int argc, char *argv[])
{
dati_esame esame[max_esami];
int i=0; //indcice esame
do{
// nome esame.
char titolo[max_nome_esame];
cout<<"inserisci il titolo di un esame\n: ";
cin.getline(titolo,max_nome_esame);
// se inserisco "stop" esco dal ciclo.
if(strcmp(titolo,"stop")==0)
break;
else strcpy (esame[i].nome,titolo);
//voto.
int voto;
do {cout<<"inserisci un voto in trentesimi\n : ";
cin>>voto;
}while (voto < 0 || voto > 30);
esame[i].voto=voto;
//lode
//data esame
i++;
}while (i<max_esami);
system("PAUSE");
return EXIT_SUCCESS;
}
Quando eseguo il programma alla prima iterazione mi fa inserire correttamente il nome e il voto, alla seconda iterazione salta l'inserimento del titolo dell'esame, come se il comando cin.getline(titolo,max_nome_esame); non venga del tutto eseguito.
usando invece cin>>titolo; funziona, ma in questo caso non ho il controllo della lunghezza dell'inserimento esame.
Qualcuno di voi ha una soluzione o un'idea?
Grazie a tutti.
Enzo.