Ciao a tutti!!sono riuscito a compilare il mio progetto!..però quando eseguo sullo schermo non viene scritto nulla..penso ci sia un problema nella gestione dei file...questa è la parte di codice corrispondentei...
queste sono le funzioni proprie di lettura delle classi collezione_studenti,collezione_corsi,collezione_es ami che hanno in private un vettore di elementi di tipi definiti da altre classi...codice:collezione_studenti tutti_gli_studenti; ifstream f1; f1.open("studenti.txt"); tutti_gli_studenti.leggi_coll_stud(f1); ifstream f2; f2.open("corsi.txt"); collezione_corsi tutti_corsi; tutti_corsi.leggi_coll_corso(f2); collezione_esami tutti_esami; ifstream f3; f3.open("esami.txt"); tutti_esami.leggi_coll_es(f3);
codice:void leggi_coll_stud(istream&SORG) { string NOME,COGNOME,INDIRIZZO,FACOLTA,EMAIL; int MATRICOLA,ANNO_CORSO; DATA DATA_DI_NASCITA; char SEP; for(int i=0;i<dim_stud;i++) { SORG>>NOME; SORG>>COGNOME; SORG>>DATA_DI_NASCITA.giorno; SORG>>SEP; SORG>>DATA_DI_NASCITA.mese; SORG>>SEP; SORG>>DATA_DI_NASCITA.anno; SORG>>INDIRIZZO; SORG>>MATRICOLA; SORG>>FACOLTA; SORG>>ANNO_CORSO; SORG>>EMAIL; coll_stud[i]=studente(MATRICOLA, ANNO_CORSO, NOME, COGNOME, INDIRIZZO, DATA_DI_NASCITA, FACOLTA, EMAIL); } return; }codice:void leggi_coll_corso(istream&SORG) { string NOME_C; int CODICE,CFU,ANNO,SEMESTRE; for(int i=0;i<dim_ins;i++) for(int j=0;j<dim_ins;j++) { SORG>>NOME_C; SORG>>CODICE; SORG>>CFU; SORG>>ANNO; SORG>>SEMESTRE; coll_corso[i]=corso(NOME_C,CODICE,CFU,ANNO,SEMESTRE); } return; }in più ci dovrebbe essere un errore anche nell'immissione di un nuovo nome perchè automaticamente dice che l'array è già pieno anche se non ho inserito alcun dato...codice:void leggi_coll_es(istream&SORG) { int MATRICOLA_STUD,CODICE_INS,VOTO; DATA DATA_ES; char SEP; for(int i=0;i<dim_es;i++) { SORG>>MATRICOLA_STUD; SORG>>CODICE_INS; SORG>>VOTO; SORG>>DATA_ES.giorno; SORG>>SEP; SORG>>DATA_ES.mese; SORG>>SEP; SORG>>DATA_ES.anno; coll_es[i]=esame(MATRICOLA_STUD,CODICE_INS,VOTO,DATA_ES); } return; }
questo è il codice nel programma principale:
questa è la funzione che utilizzo per trovare il primo elemento vuoto dell'array:codice:k=tutti_gli_studenti.get_nome_coll_stud(); if(k!=0) { cout<<"inserisci il nome"<<endl; tutti_gli_studenti.leggi_un_nome(cin,k); } else cout<<"file già pieno"<<endl;
invece questa è la funzione di lettura del nomecodice:int get_nome_coll_stud() { for(int i=0;i<dim_stud;i++) if(coll_stud[i].get_nome()=="") return i; return 0; }
grazie per il vostro aiuto!codice:void leggi_un_nome(istream&SORG,int i) { coll_stud[i].leggi_nome(SORG); return; }

Rispondi quotando