Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C++] Segmentation fault

    Mi sapete dire perchè questo programma a volte va in segmentation fault (errore #11) ?? Ho sbagliato qualcosa coi puntatori?? Grazie.

    codice:
    /*
    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.