PDA

Visualizza la versione completa : [C++] Segmentation fault


gygabyte017
15-03-2006, 22:18
Mi sapete dire perchè questo programma a volte va in segmentation fault (errore #11) ?? Ho sbagliato qualcosa coi puntatori?? Grazie.



/*
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;
}
//------------


Grazie :ciauz:

oregon
15-03-2006, 23:34
Per risponderti bisognerebbe creare un nuovo progetto C, copiare il sorgente e, soprattutto, disporre degli stessi file (con i medesimi contenuti) che usi ...

Se aggiungi che non hai minimamente indicato in quale fase rilevi l'errore, come pensi di poter avere un aiuto concreto?

Loading