// Supponiamo di avere la seguente situazione
// Pittore: Nome - Cognome - Età - Città - Identificativo
// Quadro: Titolo - Prezzo - Dimensioni - Tecnica - Identificativo
// Scrivere due vettori di struct - pittori e quadri. Il programma deve inserire il codice di un quadro e identificare
// il pittore. Viceversa inserito l'identificativo del pittore, stampare i quadri che dipinto
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
struct Pittore{
string nome;
string cognome;
int eta;
string citta;
int id;
};
struct Quadro{
string titolo;
float prezzo;
string dimensioni;
string tecnica;
int pid;
};
void inserisciPittori(Pittore pittori[]);
void inserisciQuadri(Pittore pittori[], Quadro quadri[]);
void visualizzaPittori(Pittore pittori[], Quadro quadri[]);
void visualizzaQuadri(Pittore pittori[], Quadro quadri[]);
int npittori, nquadri;
int main(int argc, char **argv)
{
cout<<"Numero pittori da inserire: ";
cin>>npittori;
cout<<"Numero di quadri da inserire: ";
cin>>nquadri;
Pittore pittori[npittori];
Quadro quadri[nquadri];
inserisciPittori(pittori);
inserisciQuadri(pittori, quadri);
int scelta;
while(true){
cout<<"\nInserisci numero azione che vuoi fare. ";
cout<<"\n[0] Esci dal programma";
cout<<"\n[1] Visualizza pittori";
cout<<"\n[2] Visualizza quadri";
cout<<"\n\nScelta: ";
cin>>scelta;
switch(scelta){
case 0:
exit(1);
break;
case 1:
visualizzaPittori(pittori, quadri);
break;
case 2:
visualizzaQuadri(pittori, quadri);
break;
default:
system("clear");
cout<<"Scelta non valida.\n";
}
}
return 0;
}
void inserisciPittori(Pittore pittori[]){
for(int i = 0; i < npittori; i++){
system("clear");
cout<<"Inserimento pittore (ID: "<<i<<")";
cout<<"\nInserisci nome del pittore: ";
cin>>pittori[i].nome;
cout<<"Inserisci cognome del pittore: ";
cin>>pittori[i].cognome;
cout<<"Inserisci età (o età alla morte): ";
cin>>pittori[i].eta;
cout<<"Inserisci città di provenienza del pittore: ";
cin>>pittori[i].citta;
pittori[i].id = i;
}
}
void inserisciQuadri(Pittore pittori[], Quadro quadri[]){
for(int i = 0; i < nquadri; i++){
system("clear");
cout<<"Inserimento quadro";
cout<<"\nInserisci titolo del quadro: ";
cin>>quadri[i].titolo;
cout<<"Inserisci prezzo del quadro: ";
cin>>quadri[i].prezzo;
cout<<"Inserisci dimensioni del quadro (NNNxNNN): ";
cin>>quadri[i].dimensioni;
cout<<"Inserisci tecnica con cui il quadro è stato dipinto: ";
cin>>quadri[i].tecnica;
cout<<"\n";
for(int x = 0; x < npittori; x++){
cout<<"\n["<<x<<"] "<<pittori[x].nome<<" "<<pittori[x].cognome;
}
cout<<"\n";
cout<<"Inserisci identificativo del pittore: ";
cin>>quadri[i].pid;
}
system("clear");
}
void visualizzaPittori(Pittore pittori[], Quadro quadri[]){
system("clear");
cout<<"Elenco pittori";
int sceltap;
for(int i = 0; i < npittori; i++){
cout<<"\n["<<i<<"] "<<pittori[i].nome<<" "<<pittori[i].cognome;
}
cout<<"\nInserisci numero di pittore di cui visualizzare le info: ";
cin>>sceltap;
system("clear");
cout<<"Info pittore (ID: "<<pittori[sceltap].id<<")";
cout<<"\nNome completo: "<<pittori[sceltap].nome<<" "<<pittori[sceltap].cognome;
cout<<"\nEtà (o età alla morte): "<<pittori[sceltap].eta;
cout<<"\nCittà di provenienza: "<<pittori[sceltap].citta;
cout<<"\n\nOpere: ";
for(int x = 0; x < nquadri; x++){
if(quadri[x].pid == sceltap){
cout<<"\n- "<<quadri[x].titolo;
}
}
cout<<"\n";
}
void visualizzaQuadri(Pittore pittori[], Quadro quadri[]){
system("clear");
cout<<"Elenco quadri";
int sceltaq;
for(int i = 0; i < nquadri; i++){
cout<<"\n["<<i<<"] "<<quadri[i].titolo;
}
cout<<"\nInserisci numero del quadro di cui visualizzare le info: ";
cin>>sceltaq;
system("clear");
cout<<"Info quadro";
cout<<"\nTitolo quadro: "<<quadri[sceltaq].titolo;
cout<<"\nPrezzo: "<<quadri[sceltaq].prezzo;
cout<<"\nTecnica: "<<quadri[sceltaq].tecnica;
cout<<"\nDipinto da: "<<pittori[quadri[sceltaq].pid].nome<<" "<<pittori[quadri[sceltaq].pid].cognome;
cout<<"\n";
}