Ciao a tutti, spero possiate darmi una mano:
Il codice è questo:
L'errore che non capisco e che non mi fa andare avanti è questo:codice:#include <cstdlib> #include <iostream> #include <string> #include <fstream> using namespace std; struct Tipostud{ string Cognome; string Nome; string Matr; int Eta; int AnnoIscrizione; string Citta; }; typedef Tipostud* Pstud; void Inserimento (Tipostud &, char &); void getfile(Pstud [],Pstud [],Pstud []); void insort(Pstud [],int ,Pstud ,char ); int main(){ int Numpers=3,Lrec=sizeof(Tipostud); /*char chr; Tipostud studente; cout<<"Numero di persone da inserire: "; cin>>Numpers; fstream filepers; filepers.open("studenti.bin",ios::in|ios::out|ios::binary|ios::ate); if (!filepers) filepers.open("studenti.bin",ios::out|ios::binary|ios::trunc); while(Numpers>0){ Inserimento(studente,chr); if (chr=='s') { filepers.seekp(0,ios::end); filepers.write((char*)&studente,Lrec); Numpers--; }} filepers.close();*/ Pstud PuntaP1[Numpers],PuntaP2[Numpers],PuntaP3[Numpers]; getfile(PuntaP1,PuntaP2,PuntaP3); system("pause"); return 0; } void Inserimento (Tipostud &pers1, char &ch) { cout << "INSERIMENTO PERSONE" << endl << endl; cout << "Cognome= "; cin >> pers1.Cognome; cout << "Nome= "; cin >> pers1.Nome; cout << "Eta\'= "; cin >> pers1.Eta; cout << "Matricola= "; cin >> pers1.Matr; cout << "Anno Iscrizione= "; cin >> pers1.AnnoIscrizione; cout << "Citta\'= "; cin >> pers1.Citta; cout << "Salva (s/n)? "; cin >> ch; } void getfile(Pstud PuntaP1[],Pstud PuntaP2[],Pstud PuntaP3[]){ Tipostud studente; ifstream file; file.open("studenti.bin",ios::in|ios::binary|ios::ate); if (!file) file.open("studenti.bin",ios::out|ios::binary|ios::trunc); int Lrec=sizeof(Tipostud); int Numstud=file.tellg()/Lrec; file.seekg(0,ios::beg); for(int i=1;i<Numstud;i++){ file.read((char*) &studente,Lrec); PuntaP1[i]=new Tipostud; *PuntaP1[i]=studente; PuntaP2[i]=PuntaP1[i]; PuntaP3[i]=PuntaP1[i]; insort(PuntaP1,i,PuntaP1[i],'c'); insort(PuntaP2,i,PuntaP2[i],'m'); insort(PuntaP3,i,PuntaP3[i],'e'); } file.close(); } void insort(Pstud Punt[],int n,Pstud Temp,char ord){ int j; Punt[0]=Temp; j=n-1; if(ord=='c'){ while(stricmp(Punt[j].Cognome,Punt[0].Cognome)>0){ Punt[j+1]=Punt[j]; j--; } } else if(ord=='m'){ while(stricmp(Punt[j].Matr,Punt[0].Matr)>0){ Punt[j+1]=Punt[j]; j--; } } else{ while(Punt[j].Eta>Punt[0].Matr){ Punt[j+1]=Punt[j]; j--; } } Punt[j+1]=Punt[0]; }
Lo stesso errore è ripetuto per Matr ed Eta. Sapete indicarmi una soluzione ed il motivo dell'errore?codice:In function `void insort(Tipostud**, int, Tipostud*, char)': Cognome' has not been declared request for member of non-aggregate type before ',' token `Cognome' has not been declared



Rispondi quotando