Elenet.net
0 voti
// 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";
}
quesito posto 21 Marzo 2017 in Classe terza da Angelo Daddi (35 punti)
  

2 Risposte

+1 voto
ok , perchè non provi a crearti delle librerie con file.h e in questo modo eviti di riscrivere il codice?
risposta inviata 22 Marzo 2017 da nicolo' guarino Esperto (687 punti)
+1 voto
potresti crearti dei file.h , in questo modo il codice risulterebbe essere più leggibile
risposta inviata 23 Marzo 2017 da Laura Guccione Corsista (149 punti)

Domande correlate

+1 voto
0 risposte
quesito posto 21 Aprile 2017 in Classe terza da nicolo' guarino Esperto (687 punti) | 87 visite
+1 voto
1 risposta
quesito posto 17 Marzo 2017 in Classe terza da nicolo' guarino Esperto (687 punti) | 278 visite
777 domande
1,565 risposte
638 commenti
1,445 utenti