PDA

View Full Version : [C++]Scrittura su file con classi


TheBestNapoli
24-03-2011, 10:56
Salve a tutti, vorrei risolvere un problemino con una funzione che mi scrive su un file ciò che mi stampa pure a video. Io ho una semplice funzione membro della classe impiegato che mi ritorna il guadagno di un impiegato
float Impiegato::earnings()const
{
int hours;
float wage;
cout<<"Inserisci le ore di lavoro: ";
cin>>hours;
cout<<"Inserisci la paga oraria: ";
cin>>wage;
return (stipendio + (wage * hours));
}
dove stipendio è un dato membro della classe. Ora ho la funzione che mi stampa a video l'impiegato
void Impiegato::print()const
{
cout<<"Nome: "<<nome<<endl;
cout<<"Data assunzione: "<<assunzione<<endl;
cout<<"Stipendio base: €"<<stipendio<<endl;
cout<<"Paga: €"<<earnings()<<endl;
}
e fin qui tutto bene, infatti quando eseguo il programma mi stampa prima nome, data assunzione e stipendio base e poi mi chiede di inserire i dati per calcolare la paga per poi stamparla.
Ora però l'esercizio mi chiede di stampare l'impiegato anche su un file
void Impiegato::printOnFile()const
{
ofstream f;
f.open("impiegato.txt", ios::out);
if(!f)
{
cerr<<"ERRORE";
}
else
{
f<<"IMPIEGATO\n";
f<<"Nome: "<<nome<<endl;
f<<"Data assunzione: "<<assunzione<<endl;
f<<"Stipendio base: €"<<stipendio<<endl;
f<<"Paga: €"<<earnings()<<endl;
}
f.close();
}
in questo modo però quando eseguo il programma, mi domanda due volte di inserire i dati infatti la funzione earnings() è presente due volte. Anche se funziona (perchè mi stampa sia a video che su file tutto ciò che mi serve) come faccio a far si che il programma mi chieda una sola volta di inserire i dati e poi mi stampi il risultato sia a video che su flie?
Grazie mille.

Don[ITA]
24-03-2011, 11:26
Prima di chiamare le tue print, salvi in una variabile float il risultato di earnings() e successivamente nelle print usi quella variabile. :)
Sono stato spiegato?? :D

Ciao

TheBestNapoli
24-03-2011, 11:56
Grande!!! Ho risolto! Grazie mille per l'aiuto :D :D :D