Buonasera ragazzi,
ho creato questo programma che se inserisce in un ipotetico scaffale una serie di libri che acquisto e se ci sono libri con titolo uguale ne aumenta la quantità, in caso contrario aggiunge il libro e basta. Bene il mio problema consiste nel fatto che mi cambia la quantità nel mio file "copia" (usato nella modifica della quantità) ma non nel file principale ("a.txt"), nonostante nella funzione in cui modifico ho utilizzato correttamente i comandi rename e remove.
codice:
#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
int nuovo();
int modifica();
class scaffale
{
public:
string titolo="";
int quantita;
};
int main()
{
int scelta;
do
{
system("CLS");
cout<<"\n1.Inserire Libro";
cout<<"\n2.-----";
cout<<"\n3.-----";
cout<<"\n4.Esci"<<endl;
cout<<"\nOperazione da eseguire:";
cin>>scelta;
switch(scelta)
{
case 1:
nuovo();
break;
case 2:
break;
case 3:
break;
} system("PAUSE");
} while(scelta!=4);
cout<<"\nGrazie per aver usato il programma!\n"<<endl;
return 0;
}
int nuovo()
{
ofstream salva;
salva.open("a.txt",ios::app);
scaffale a;
string nuovo="";
cout<<"\nInserire il titolo del libro da inserire:";
cin>>nuovo;
bool libroSi=false;
ifstream leggi;
leggi.open("a.txt");
while(!leggi.eof())
{
leggi>>a.titolo;
leggi>>a.quantita;
if(a.titolo==nuovo)
{
libroSi=true;
}
}
leggi.close();
if(libroSi==true)
{
modifica();
}
else
{
ofstream salva;
salva.open("a.txt",ios::app);
a.titolo=nuovo;
cout<<"\nQuantita:";
cin>>a.quantita;
salva<<a.titolo<<endl;
salva<<a.quantita<<endl;
salva.close();
}
}
int modifica()
{
scaffale a;
ifstream leggi;
leggi.open("a.txt");
ofstream posizioni("posizioni.txt");
int posizione=0;
string titoloCercato="";
cout<<"\nLIBRO PRESENTE\n";
cout<<"\nReinserire titolo da aggiungere:";
cin>>titoloCercato;
while(!leggi.eof())
{
leggi>>a.titolo;
leggi>>a.quantita;
posizione++;
if(titoloCercato==a.titolo)
{
cout<<"\nTrovato nella posizione:"<<posizione<<endl;
cout<<"\nQuantita:"<<a.quantita<<endl;
posizioni<<posizione<<endl;
}
}
leggi.close();
posizioni.close();
int daModificare=0;
cout<<"\nInserire la poszione del libro di cui modificare la quantita:";
cin>>daModificare;
ofstream copia("copia.txt");
leggi.open("a.txt");
for(int i=0; i<daModificare-1; i++)
{
leggi>>a.titolo;
leggi>>a.quantita;
copia<<a.titolo<<endl;
copia<<a.quantita<<endl;
}
leggi>>a.titolo;
leggi>>a.quantita;
int quantitaDaAgg;
int nuovaQuant;
cout<<"Inserire quantita:";
cin>>quantitaDaAgg;
nuovaQuant=quantitaDaAgg+a.quantita;
a.quantita=nuovaQuant;
copia<<a.titolo<<endl;
copia<<a.quantita<<endl;
while(!leggi.eof())
{
scaffale a;
leggi>>a.titolo;
if(a.titolo!="")
{
leggi>>a.quantita;
copia<<a.titolo<<endl;
copia<<a.quantita<<endl;
}
}
leggi.close();
copia.close();
remove("a.txt");
rename("copia.txt","a.txt");
}