Mi sapete dire perchè questo programma a volte va in segmentation fault (errore #11) ?? Ho sbagliato qualcosa coi puntatori?? Grazie.
Graziecodice:/* ID: gygabyt1 LANG: C++ TASK: gift1 */ //--------------------------------------------------------------------------- #include <iostream> #include <fstream> #include <string> using namespace std; //--------------------------------------------------------------------------- typedef struct Persona { string Name; int Soldi; int Inizio; string *Dest; int NDest; } Persona; //--------------------------------------------------------------------------- Persona *Persone; int getPersonaIndex(string name) { int i=0; while(Persone[i++].Name!=name); return i-1; } Persona getPersonaStr(string name) { return Persone[getPersonaIndex(name)]; } //--------------------------------------------------------------------------- void Mostra(int i) { cout << Persone[i].Name << "\t" << Persone[i].Inizio << "\t" << Persone[i].Soldi << endl; } int main() { ifstream in("gift1.in"); ofstream out("gift1.out"); int NP; in >> NP; Persone = new Persona[NP]; for (int i=0; i<NP; i++) in >> Persone[i].Name; while (!in.eof()) { string Donatore; in >> Donatore; Persona Temp = getPersonaStr(Donatore); in >> Temp.Soldi >> Temp.NDest; Temp.Inizio = Temp.Soldi; Temp.Dest = new string[Temp.NDest]; for (int i=0; i<Temp.NDest; i++) in >> Temp.Dest[i]; Persone[getPersonaIndex(Donatore)] = Temp; } for (int i=0; i<NP; i++) { for (int j=0; j<Persone[i].NDest; j++) { Persone[getPersonaIndex(Persone[i].Dest[j])].Soldi+=Persone[i].Inizio/Persone[i].NDest; Persone[i].Soldi -= Persone[i].Inizio/Persone[i].NDest; } //Mostra(i); } for (int i=0; i<NP; i++) { out << Persone[i].Name << " " << Persone[i].Soldi-Persone[i].Inizio << endl; } return 0; } //------------![]()

Rispondi quotando