File txt c++

di il
4 risposte

File txt c++

Buon giorno ragazzi.
sono alle basi del c++ e sto studiando da solo. Sono arrivato a fare questo programma c++.
Il problema richiede: si hanno 3 professori(Enrico, Giovanni, Pietro) di ripetizioni private, tu vuoi segnarti le ore e tramite un menù devi avere due opzioni, aggiungere ore(e poi scegliere quale dei 3 prof aggiungere l'ora/e), o visualizzare le ore fatte fino ad ora con i tre prof. L'obiettivo è che in un file .txt (un file per ogni prof) vengano aggiunte tutte le ore sommate.

ecco cosa ho fatto fino ad ora:
Io ho pensato di creare un file txt per ogni ora/e aggiunte, tipo Enrico 1(conterrà ad esempio 2 ore), poi Enrico 2(ad esempio conterrà 1 ora), poi pietro ecc...

Vi ringrazio moltissimo <3

#include <fstream>
#include <iostream>
#include <math.h>
#include <ctime>
using namespace std;
char enrico, pietro, giovanni;
string cos3, cos2, cos1;

int main() {
int menu, materia, enrico1, giovanni1, pietro1;
do{
system ("cls");
cout <<"\nAggiungi ore --->1";
cout <<"\nVisualizza ore ->2 \n>";
cin>>menu;
if(menu==1){
do{
cout << "\nChe materia hai fatto? Enrico(1), Giovanni(2), Pietro(3)? \n>";
cin >>materia;
}while(materia<1 || materia >3);
if (materia==1){
cout <<"\nQuante ore hai fatto con Enrico? \n>";
cin>>enrico1;
ofstream SaveFile("enrico.txt");
SaveFile <<enrico1;
cout <<"Ore aggiunte! (+"<<enrico1<<")\n";
system ("pause");
}
else if(materia==2){
cout <<"\nQuante ore hai fatto con Giovanni? \n>";
cin>>giovanni1;
ofstream SaveFile("giovanni.txt");
SaveFile <<giovanni1;
cout <<"Ore aggiunte! (+"<<giovanni1<<")\n";
system ("pause");
}
else if(materia==3){
int pietroTot;
cout <<"\nQuante ore hai fatto con Pietro? \n>";
cin>>pietro1;
cout<<"come vuoi salvare il file? \n>";
cin>>cos3;
ofstream myfile (cos3<<".txt");
if (myfile.is_open())
{
myfile << pietro1;
myfile.close();
}
else cout << "Unable to read file";

cout <<"Ore aggiunte! (+"<<pietro1<<")\n";
system ("pause");
}

}
else if (menu==2){
cout << "enrico: "<<enrico;
string line;
ifstream myfile ("enrico.txt");
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
cout << line << "\n";
}
myfile.close();
}
else cout << "Unable to read file";

cout << "giovanni: "<<giovanni;
string line2;
ifstream myfile2 ("giovanni.txt");
if (myfile2.is_open())
{
while ( getline (myfile2,line2) )
{
cout << line2 << "\n";
}
myfile2.close();
}

else cout << "Unable to read file";

cout << "pietro: "<<pietro;
string line3;
ifstream myfile3 ("pietro.txt");
if (myfile3.is_open())
{
while ( getline (myfile3,line3) )
{
cout << line3 << "\n";
}
myfile3.close();
}

else cout << "Unable to read file";
system ("pause");
}
}while (menu !=10);
}

4 Risposte

  • Re: File txt c++

    Ciao, utilizza il tag CODE altrimenti diventa complicato leggere il codice
  • Re: File txt c++

    Anche io sto studiando...
    alla riga 43, per salvare il file del professore Piero, chiedi il nome, diversamente dagli altri professori e ho un errore:
    
    cout<<"come vuoi salvare il file? \n>";
    cin>>cos3;
    ofstream myfile (cos3<<".txt"); // qui ricevo errore
    
    codice corretto:
    
    cout<<"come vuoi salvare il file? \n>";
    cin>>cos3;
    ofstream myfile (cos3+".txt");
    
    con la correzione il programma parte e non da errori, anche se poi le ore non vengono sommate a quelle esistenti, nel file.txt trovo solo l'ultimo input.
    Per sommare le ore ho letto il file aggiunto le ore e risalvato il file:
    
    if (materia==1){
    	// lettura del valore salvato
    	ifstream ReadFile("enrico.txt");
    	int enricoTXT = 0;
    	ReadFile>> enricoTXT;
    	cout <<"\nQuante ore hai fatto con Enrico? attuali ("<<enricoTXT<<") \n>";
    	cin>>enrico1;
    	// somma al valore introdotto
    	enricoTXT+=enrico1;
    	// salvataggio del risultato
    	ofstream SaveFile("enrico.txt");
    	SaveFile <<enricoTXT;
    	//--------------------------
    	cout <<"Ore aggiunte (+"<<enrico1<<") totali ("<<enricoTXT<<")\n";
    	system ("pause");
    }
    
    La modifica se ti piace la puoi estendere agli altri professori
  • Re: File txt c++

    Scrivendo il codice come hai fatto, devi ripetere le routine, per esempio se vuoi aggiungere altri professori dovresti riscrivere tutto...
    Nell'esempio seguente, la porzione di codice che aggiunge le ore l'ho messa nella routine: aggiungi(string nome), e la porzione di codice che legge le ore nei files, l'ho messa in: leggi(string nome)
    Il codice è molto più compatto:
    
    #include <fstream>
    #include <iostream>
    #include <math.h>
    #include <ctime>
    using namespace std;
    
    int leggi(string nome){
        ifstream ReadFile(nome+".txt");
        int OreInTxt=0;
        ReadFile>>OreInTxt;
        return OreInTxt;
    }
    
    int aggiungi(string nome){
        int OreInput=0;
        int attuale = leggi(nome);
        cout<<"\nQuante ore hai fatto con "<<nome<<"? attuali ("<<attuale<<") ->";
        cin>>OreInput;
        attuale+=OreInput;
        ofstream SaveFile(nome+".txt");
        SaveFile<<attuale;
        cout<<"Ore aggiunte a "<<nome<<" (+"<<OreInput<<") totali ("<<attuale<<")\n\n";
        system ("pause");
        return 0;
    }
    
    int main(){
        int menu=0, materia=0;
        do{
            system ("cls");
            cout<<"\nAggiungi ore   ->1";
            cout<<"\nVisualizza ore ->2";
            cout<<"\nEsci           ->0\n";
            cout<<"\nTua scelta     ->";
            cin>>menu;
            if(menu==1){
                do{
                    system ("cls");
                    cout<<"\nCon chi hai studiato?\n";
                    cout<<"\nEnrico     ->1";
                    cout<<"\nGiovanni   ->2";
                    cout<<"\nPietro     ->3";
                    cout<<"\nRenato     ->4";
                    cout<<"\nEsci       ->0\n";
                    cout<<"\nTua scelta ->";
                    cin>>materia;
                    if (materia==0){return 0;}
                }while(materia<1 || materia >4);
                if (materia==1){aggiungi("Enrico");}
                if (materia==2){aggiungi("Giovanni");}
                if (materia==3){aggiungi("Pietro");}
                if (materia==4){aggiungi("Renato");}
            }
            else if (menu==2){
                cout<<"\nEnrico: "<<leggi("Enrico")<<"\n";
                cout<<"Giovanni: "<<leggi("Giovanni")<<"\n";
                cout<<"Pietro: "<<leggi("Pietro")<<"\n";
                cout<<"Renato: "<<leggi("Renato")<<"\n\n";
                system ("pause");
            }
        }while (menu !=0);
        return 0;
    }
    
  • Re: File txt c++

    Grazie mille!
Devi accedere o registrarti per scrivere nel forum
4 risposte