//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;
}