Buonpomeriggio a tutti , ho un problema con la lettura di una serie di dati di tipo intero da un file di testo spero davvero mi risolviate il problema perché sono 6 ore ormai che ci sto sbattendo la testa !
In riferimento al codice qui sotto riportato, il dato in questione è n_esami che, rappresenta il numero di esami superati da ciascuno studente ed è dichiarato come variabile globale.
Il dato viene richiamato all'interno di un ciclo while attraverso l'istruzione fin >> n_esami dove fin è il file oggetto della classe ifstream.
n_esami verrà poi inserito nell'oggetto studente s[n_stud] tramite il suo costruttore etc....
Durante la fase di compilazione non ci sono né errori né warning di nessun tipo ma, quando procedo con l'esecuzione il programma esce con il seguente codice di errore
Process finished with exit code -1073740940 (0xC0000374).
Con riferimento al file di testo Database.txt ,provando a fare la prova in debugging , il programma funziona al primo ciclo di lettura del file ma, arrivato all'utente Luca Bianco all'esecuzione della linea di codice
fin >> n_esami che dovrebbe leggere e salvare 8, cioè il valore che rappresenta il numero di esami superati dallo studente luca bianco, si blocca. Ho provato a dichiarare un vettore di interi in cui a ciascun indice è associato il numero di esami superati per ciascuno studente ,ho usato puntatori ,ho provato con il container <vector> ma niente ,mi da sempre questo problema!
int main() {
ifstream fin;
fin.open("Database.txt");
int n_stud=0;
Student *s[50];
int n_esami;
string nome,cognome;
int voti[50];
for (int &i : voti)
i =0;
while ((!fin.eof())&&(n_stud<50)) {
fin >> nome;
fin.ignore();
fin >> cognome;
fin.ignore();
fin >> n_esami;
fin.ignore();
for (int i=0;i<n_esami;i++){
fin >> voti[i];
fin.ignore();
}
s[n_stud]=new Student(nome, cognome, n_esami, voti, n_esami > 20);
n_stud++;
}
fin.close();
File Database.txt
Mario Rossi 4
29 30 27 24
Luca Bianco 8
18 18 20 21 23 20 19 21
Marina Stella 3
25 25 25
Arianna Bruno 7
18 30 19 27 20 28 21