//dato un file contenente su ogni riga una sequenza di coppie nome prodotto,tipo prodotto(A per alimentari e D per detersivi)
//quantità acquistata,prezzo,calcolare:
//il prezzo medio dei prodotti acquistati in quantità pari ad un generico valore trasferire in un secondo file,
//le informazioni sui prodotti il cui quantitativo di acquisto è superiore ad un generico valore e in un terzo quelli il cui quantitativo
//è inferiore allo stesso generico valore.
using namespace std;
#include <iostream>
#include <string>
#include <string.h>
#include <fstream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//prototipi//
void menu(int &scelta);
bool inizializza(char *nome_f);
bool visualizza(char *nome_f);
void punto1(char*nome_f1,int l);
bool trasferisci(char*nome_f1,char*nome_f2,char*nome_f3);
//funzione principale//
int main(int argc, char** argv) {
const int LUNS=30;
char nome_f[LUNS];
string risp;
cout<<"Vuoi inizializzare? : ";
cin>>risp;
if(risp=="si")
{ if(!inizializza(nome_f)) return 0;
}
else
{ cout<<"Dammi il nome del file : ";
cin>>nome_f;
}
visualizza(nome_f);
punto1(nome_f,LUNS);
return 0;
}
bool inizializza(char *nome_f)
{ cout<<"Dammi il nome del file : ";
cin>>nome_f;
ofstream f(nome_f);
if(!f.is_open()) return false;
int n;
do
{ cout<<"Inserisci il numero degli elementi che vuoi inserire: ";
cin>>n;
}while(n<0);
string nome;
char tipo;
float prezzo,quantita;
for(int i=0;i<n;++i)
{ cout<<"Inserisci il nome"<<'\n';
cin>>nome;
do{ cout<<"Inserisci il tipo: "<<'\n'; cin>>tipo;}while(tipo!='d'&&tipo!='a');
do{ cout<<"Inserisci il prezzo: "<<'\n'; cin>>prezzo;}while(prezzo<0);
do{cout<<"Inserisci la quantita' : "<<'\n'; cin>>quantita;}while(quantita<0);
f<<nome<<" "<<tipo<<" "<<prezzo<<" "<<quantita<<endl;
}
f.close();
return true;
}
bool visualizza(char *nome_f)
{ ifstream f(nome_f);
if(!f.is_open()) return false;
string nome;
char tipo;
float prezzo,quantita;
while(f>>nome>>tipo>>prezzo>>quantita)
cout<<"Nome: "<<nome<<" "<<"Tipo: "<<tipo<<" "<<"Prezzo: "<<prezzo<<" "<<"Quantita: "<<quantita<<endl;
f.close();
return true;
}
void punto1(char*nome_f1,int LUNS){
char nome_f2[LUNS];
char nome_f3[LUNS];
if(trasferisci(nome_f1,nome_f2,nome_f3))
{
visualizza(nome_f2);
visualizza(nome_f3);
}else
cout<<"il trasferimento e avvenuto senza successo!"<<endl;
}
bool trasferisci(char*nome_f1,char*nome_f2,char*nome_f3){
ifstream (nome_f1);
if(!f1.is_open())return false;
cout<<"inserisci il nome del secondo file:"<<endl;
cin>>nome_f2;
ofstream f2(nome_f2);
if(!f2.is_open())return false;
cout<<"inserisci il nome del terzo file:"<<endl;
cin>>nome_f3;
ofstream (nome_f3);
if(!f3.is_open());return false;
float somma,cont;
somma=cont=0;
int gen_val;
cout<<"inserisci un generico valore:"<<endl;
cin>>gen_val;
string nome;
char prodotto;
int quant_ac;
float prezzo;
while(f1>>nome>>prodotto>>quant_ac>>prezzo)
{
if(quant_ac%2==0&&quant_ac==gen_val)
{
somma+=prezzo;
cont++;
}else
cout<<"i dati inseriti sono errati"<<endl;
if(quant_ac>gen_val)
f2<<nome<<" "<<prodotto<<" "<<quant_ac<<" "<<prezzo<<endl;
else
f3<<nome<<" "<<prodotto<<" "<<quant_ac<<" "<<prezzo<<endl;
}
f1.close();
f2.close();
f3.close();
return true;
}