Ciao a tutti, ho risolto questo esercizio che mi era stato assegnato. La compilazione non da errori, ma ogni volta che il programma viene eseguito, va in crash e si chiude.. Non riesco davvero a capire di cosa si tratti, ci sono su da un po di tempo ma non ho mai capito il perchè. Ecco il materiale che vorrei farvi esaminare: (ah, uso il compilatore Orwell Dev C++ 5.6.2 su Windows 8)
main.cpp
Faccio uso di due file, da cui leggo per costruire le due liste "Num_pezzi" e "Num_venduti":codice:#include <iostream>#include <fstream> using namespace std; struct Nodo { string ID; int Qty; struct Nodo * Next; }; void Lista_Scorte(ifstream & Acquisti, ifstream & Prodotti, struct Nodo * Num_pezzi, struct Nodo * Num_venduti); int Totale_Venduto(struct Nodo * Num_pezzi); int main () { ifstream Acquisti, Prodotti; int Totale; struct Nodo * Num_pezzi = NULL; struct Nodo * Num_venduti = NULL; Lista_Scorte(Acquisti, Prodotti, Num_pezzi, Num_venduti); while (Num_pezzi != NULL) cout <<Num_pezzi->ID <<" " <<Num_pezzi->Qty <<endl; Totale = Totale_Venduto(Num_pezzi); cout <<"Il totale dei pezzi venduti e': " <<Totale <<endl; return 0; } void Lista_Scorte(ifstream & Acquisti, ifstream & Prodotti, struct Nodo * Num_pezzi, struct Nodo * Num_venduti) { string HaveRead; int Pieces; struct Nodo * TNum_pezzi = NULL; struct Nodo * TNum_venduti = NULL; TNum_pezzi = Num_pezzi; TNum_venduti = Num_venduti; Acquisti.open("Acquisti.txt"); Prodotti.open("Prodotti.txt"); if (!Acquisti && !Prodotti) return; while (!Acquisti.eof()) { getline(Acquisti, HaveRead, ' '); TNum_venduti->ID = HaveRead; Acquisti >> Pieces; TNum_venduti->Qty = Pieces; TNum_venduti->Next = new Nodo(); } while (!Prodotti.eof()) { getline(Prodotti, HaveRead, ' '); TNum_pezzi->ID = HaveRead; Prodotti >> Pieces; TNum_pezzi->Qty = Pieces; TNum_pezzi->Next = new Nodo(); } Acquisti.close(); Prodotti.close(); TNum_pezzi = Num_pezzi; TNum_venduti = Num_venduti; while (TNum_venduti != NULL) { if (TNum_venduti->ID == TNum_pezzi->ID) TNum_pezzi->Qty = TNum_pezzi->Qty - TNum_venduti->Qty; TNum_venduti = TNum_venduti->Next; TNum_pezzi = TNum_pezzi->Next; } delete TNum_pezzi; delete TNum_venduti; return; } int Totale_Venduto(struct Nodo * Num_pezzi) { int Sum = 0; if (Num_pezzi != NULL) return Sum = Sum + Num_pezzi->Qty + Totale_Venduto(Num_pezzi->Next); else return Sum; }
Prodotti.txt
Acquisti.txtcodice:ID_1 20 ID_2 0 ID_3 30 ID_4 0 ID_5 20 ID_6 0 ID_7 40 ID_8 0
Vorrei potervi dire di più, ma non ho davvero idea di cosa si possa trattare.. vi prego aiutatemi, ci sto perdendo la testa su da troppocodice:ID_1 5 ID_3 10 ID_5 8 ID_7 20
Grazie a tutti!
P.s : Il problema si verifica nella function "Lista_Scorte".


Rispondi quotando