Ho questo programma che memorizza da un file dei nomi e li inserisce in una lista. Tuttavia dopo che l'inizializzazione è eseguita e pure la stampa, l'applicazione non termina. Bensì rimane in attesa, come se si aspettasse che dovessi inserire dei valori. Questo è il codice, qualche idea?
codice:#include <iostream> #include <fstream> #include <cstring> using namespace std; int const MAX_S = 50; struct elem{ int inf; char str[MAX_S]; elem* next; }; typedef elem* lista; class Ufficio{ lista testa; int num; public: Ufficio(const char*); void arriva(const char*); friend ostream& operator<<(ostream&, const Ufficio&); }; //Function void insTesta(lista& li, const char* s, int n){ elem* p = new elem; strcpy(p->str, s); p->inf = n; p->next = li; li = p; } //Function Member Ufficio::Ufficio(const char* s){ testa = NULL; num = 1; char str[MAX_S]; ifstream in(s); if(!in) { cerr << "Errore apertura file"; exit(1); } while(in >> str) arriva(str); } void Ufficio::arriva(const char* s){ elem* p; elem* q; for(q=testa; q!=NULL; q=q->next) p = q; q = new elem; q->inf = num++; strcpy(q->str, s); q->next = NULL; if(testa==NULL) testa = q; else p->next = q; } ostream& operator<<(ostream& os, const Ufficio& uf){ os << "Cognome\t\t" << "Numero\n"; elem* p = uf.testa; lista prov = NULL; while(p!=NULL) { insTesta(prov, p->str, p->inf); p=p->next; } p = prov; while(p!=NULL) { os << p->str << "\t\t" << p->inf << endl; p = p->next; } return os; } int main(){ Ufficio uf("registro.txt"); cout << uf; return 0; }

					
					
					
						
  Rispondi quotando