struct data
{
int giorno, mese, anno;
};
struct indirizzo
{
string citta;
string via;
string cap;
string provincia;
};
struct prodotto
{
string nome;
string marca;
string prezzo;
string descrizione;
};
struct ordine
{
prodotto oggetto;
string quantita;
ordine* succ;
};
struct cliente
{
string nome;
string cognome;
indirizzo indresidenza;
string numtelefono;
data datanascita;
indirizzo indnegozio;
int numordini; //cardinalità dell'array dinamico
ordine* vendite; //array dinamico
cliente* succ; //puntatore ad elemento successivo della lista
};
typedef cliente* lista;
void LetturaStringa(string & st)
{
char ch;
st="";
do cin.get(ch);
while( ch=='\n' );
while( ch!='\n' )
{
st=st+ch;
cin.get(ch);
}
};
lista CreaLista(int n)
{
lista list, paux;
paux=new cliente;
paux->succ=list;
list=paux;
paux=paux->succ;
for(int i=0; i<n; ++i)
{
paux->succ=new cliente;
paux=paux->succ;
cout<<"Inserire i dati del "<<i+1<<" cliente:"<<endl;
cout<<"Inserire nome: ";
cin>>paux->nome;
cout<<endl;
cout<<"Inserire cognome: ";
cin>>paux->cognome;
cout<<endl;
cout<<"Inserire indirizzo di residenza: "<<endl,
cout<<"Città: ";
cin>>paux->indresidenza.citta;
cout<<endl;
cout<<"Via: ";
cin>>paux->indresidenza.via;
cout<<endl;
cout<<"Cap: ";
cin>>paux->indresidenza.cap;
cout<<endl;
cout<<"Provincia: ";
cin>>paux->indresidenza.provincia;
cout<<endl;
cout<<"Inserire numero di telefono: ";
cin>>paux->numtelefono;
cout<<endl;
cout<<"Inserire data di nascita: "<<endl;
cout<<"Giorno: ";
cin>>paux->datanascita.giorno;
cout<<endl;
cout<<"Mese: ";
cin>>paux->datanascita.mese;
cout<<endl;
cout<<"Anno: ";
cin>>paux->datanascita.anno;
cout<<endl;
cout<<"Inserire indirizzo del negozio: "<<endl;
cout<<"Città: ";
cin>>paux->indnegozio.citta;
cout<<endl,
cout<<"Via: ";
cin>>paux->indnegozio.via;
cout<<endl;
cout<<"Cap: ";
cin>>paux->indnegozio.cap;
cout<<endl;
cout<<"Provincia: ";
cin>>paux->indnegozio.provincia;
cout<<endl;
cout<<"Numero di ordini: ";
cin>>paux->numordini;
cout<<endl;
int v=paux->numordini;
paux->vendite=new ordine[v];
for(int j=0; j<v; ++j)
{
cout<<"Ordine "<<j+1<<" inizializza:"<<endl;
cout<<"Nome prodotto: ";
cin>>paux->vendite[j].oggetto.nome;
cout<<endl;
cout<<"Marca: ";
cin>>paux->vendite[j].oggetto.marca;
cout<<endl;
cout<<"Prezzo: ";
cin>>paux->vendite[j].oggetto.prezzo;
cout<<endl;
cout<<"Descrizione (inserire \n per terminare): ";
LetturaStringa(paux->vendite[j].oggetto.descrizione);
cout<<"Quantità: ";
cin>>paux->vendite[j].quantita;
cout<<endl;
}
}
paux->succ=NULL;
paux=list;
list=list->succ;
delete paux;
return list;
}
void Stampa(lista list)
{
lista paux=list;
int i=1;
while(list!=NULL)
{
cout<<"Cliente "<<i<<endl;
cout<<"Nome: "<<paux->nome<<endl;
cout<<"Cognome: "<<paux->cognome<<endl,
cout<<"Indirizzo di residenza:"<<endl;
cout<<"Città: "<<paux->indresidenza.citta<<endl;
cout<<"Via: "<<paux->indresidenza.via<<endl;
cout<<"Cap: "<<paux->indresidenza.cap<<endl;
cout<<"Provincia: "<<paux->indresidenza.provincia<<endl;
cout<<"Numero di telefono: "<<paux->numtelefono<<endl;
cout<<"Data di nascita: "<<paux->datanascita.giorno<<"/"<<paux->datanascita.mese<<"/"<<paux->datanascita.anno<<endl;
cout<<"Indirizzo negozio:"<<endl;
cout<<"Città: "<<paux->indnegozio.citta<<endl;
cout<<"Via: "<<paux->indnegozio.via<<endl;
cout<<"Cap: "<<paux->indnegozio.cap<<endl;
cout<<"Provincia: "<<paux->indnegozio.provincia<<endl;
cout<<"Numero di ordini: "<<paux->numordini<<endl;
int x=paux->numordini;
for(int j=0; j<x; ++j)
{
cout<<"Ordine "<<j+1<<" :"<<endl;
cout<<"Nome prodotto: "<<paux->vendite[x].oggetto.nome<<endl;
cout<<"Marca: "<<paux->vendite[x].oggetto.marca<<endl;
cout<<"Prezzo: "<<paux->vendite[x].oggetto.prezzo<<endl;
cout<<"Descrizione: "<<paux->vendite[x].oggetto.descrizione<<endl;
cout<<"Quantità: "<<paux->vendite[x].quantita<<endl;
cout<<endl;
}
++i;
}
}