Tabella (vettore di struct)

di il
8 risposte

Tabella (vettore di struct)

Buongiorno a tutti ieri mi è stato assegnato questo compito in c++ solo che non mi esegue la seconda funzione per il caricamento , ho usato parametri formali e non capisco quel sia il problema ,dato che compilando non me ne da , se potete aiutarmi mi sarebbe di grande aiuto dato che domani devo presentarlo per un'interrogazione.

#include <iostream>
#include <string>
#include <cmath>
using namespace std;
const int MAX=10;


struct modellodata
{
int giorno;
int mese;
int anno;
};


struct modelloprodotto
{
int codicenumerico;
string nome;
string marca;
float prezzo;
modellodata dataprod;
modellodata datascad;
};


struct modellofornitore
{
string marca;
int partitaiva;
string nomefornitore;
string citta;
modellodata datafornitura;

};


int INSERIREDIMENSIONE()
{
int d=0;
do{
cout<<"QUANTI PRODOTTI SI VUOLE INSERIRE ? "<<endl;
cin>>d;
}while (d<1 || d>MAX);
}


void CARICAVETTORERECORD(modelloprodotto prodotto_f[10],int d_f)
{
for(int i=0 ;i<d_f;i++)
{
cout<<"INSERIRE INFORMAZIONI DEL PRODOTTO"<<endl;
cout<<""<<endl;
cout<<""<<endl;
cout<<"INSERIRE CODICENUMERICO DEL PRODOTTO"<<endl;
cin>>prodotto_f.codicenumerico;
cout<<"INSERIRE NOME DEL PRODOTTO"<<endl;
cin>>prodotto_f.nome;
cout<<"INSERIRE LA MARCA DEL PRODOTTO"<<endl;
cin>>prodotto_f.marca;
cout<<"INSERIRE PREZZO DEL PRODOTTO"<<endl;
cin>>prodotto_f.prezzo;
cout<<"INSERIRE GIORNO DI PRODUZIONE DEL PRODOTTO"<<endl;
cin>>prodotto_f.dataprod.giorno;
cout<<"INSERIRE MESE DI PRODUZIONE DEL PRODOTTO"<<endl;
cin>>prodotto_f.dataprod.mese;
cout<<"INSERIRE ANNO DI PRODUZIONE DEL PRODOTTO"<<endl;
cin>>prodotto_f.dataprod.anno;
cout<<"INSERIRE GIORNO DI SCADENZA DEL PRODOTTO"<<endl;
cin>>prodotto_f.datascad.giorno;
cout<<"INSERIRE MESE DI SCADENZA DEL PRODOTTO"<<endl;
cin>>prodotto_f.datascad.mese;
cout<<"INSERIRE ANNO DI SCADENZA DEL PRODOTTO"<<endl;
cin>>prodotto_f.datascad.anno;
cout<<""<<endl;
cout<<""<<endl;
}
}


int main()
{
int d;
modelloprodotto prodotto[MAX];
modellofornitore fornitore[MAX];
INSERIREDIMENSIONE();
CARICAVETTORERECORD(prodotto,d);

}

8 Risposte

  • Re: Tabella (vettore di struct)

    Per favore metti il codice nel tag code. Selezionalo tutto e clicca sul pulsante "</>".
  • Re: Tabella (vettore di struct)

    
    #include <iostream>
    #include <string>
    #include <cmath>
    using namespace std;
    const int MAX=100;
    
    
    struct modellodata
    {
    	int giorno;
    	int mese;
    	int anno;
    };
    
    
    struct modelloprodotto
     	{
     		int codicenumerico;
     		string nome;
     		string marca;
     		float prezzo;
     		modellodata dataprod;
     		modellodata datascad;
    	};
    	
    	
    struct modellofornitore
     	{
     		string marca;
     		int partitaiva;
     		string nomefornitore;
     		string citta;
     		modellodata datafornitura;
     		
    	};
    	
    	
    int INSERIMENTODIMENSIONE()
    {
    	int dim;
    	do 
    	{
    		cout<<"QUANTI PRODOTTI SI VUOLE INSERIRE ? "<<endl;
    		cin>>dim;
        } while(dim<1|| dim>MAX);
        return dim;
    }
    
    void RIEMPIMENTOPRODOTTI(modelloprodotto prodotto_f[100],int dim_f)
    {
    	for(int i=0;i<dim_f;i++) 
    	{
    		cout<<"INSERIMENTO DEL PRODOTTO"<<endl;
    		cout<<""<<endl;
    		cout<<""<<endl;
    		cout<<"INSERIRE IL CODICE NUMERICO DEL PROD"<<endl;
    		cin>>prodotto_f[i].codicenumerico;
    		cout<<"INSERIRE NOME PROD"<<endl;
    		cin>>prodotto_f[i].nome;
    		cout<<"INSERIRE MARCA PROD"<<endl;
    		cin>>prodotto_f[i].marca;
    		cout<<"INSERIRE PREZZO PROD"<<endl;
    		cin>>prodotto_f[i].prezzo;
    		cout<<"INSERIRE GIORNO DELLA DATA DI PRODUZIONE DEL PROD"<<endl;
    		cin>>prodotto_f[i].dataprod.giorno;
    		cout<<"INSERIRE MESE DELLA DATA DI PRODUZIONE DEL PROD"<<endl;
    		cin>>prodotto_f[i].dataprod.mese;
    		cout<<"INSERIRE ANNO DELLA DATA DI PRODUZIONE DEL PROD"<<endl;
    		cin>>prodotto_f[i].dataprod.anno;
    		cout<<"INSERIRE GIORNO DELLA DATA DI SCADENZA DEL PROD"<<endl;
    		cin>>prodotto_f[i].datascad.giorno;
    		cout<<"INSERIRE MESE DELLA DATA DI SCADENZA DEL PROD"<<endl;
    		cin>>prodotto_f[i].datascad.mese;
    		cout<<"INSERIRE ANNO DELLA DATA DI SCADENZA DEL PROD"<<endl;
    		cin>>prodotto_f[i].datascad.anno;	
    		cout<<""<<endl;
    		cout<<""<<endl;
        }
    }
    
    
    void RIEMPIMENTOFORNITORI(modellofornitore fornitore_f[100],int dim_f)
    {
    	for(int i=0;i<dim_f;i++) 
    	{
    	cout<<""<<endl;
    	cout<<""<<endl;
    	cout<<"INSERIMENTO INFORMAZIONI DEL FORNITORE"<<endl;
    	cout<<""<<endl;
    	cout<<""<<endl;
    	cout<<"INSERIRE MARCA DEL FORNITORE"<<endl;
    	cin>>fornitore_f[i].marca;
    	cout<<"INSERIRE CODICE PARTITA IVA DEL FORNITORE"<<endl;
    	cin>>fornitore_f[i].partitaiva;
    	cout<<"INSERIRE IL NOME DEL FORNITORE"<<endl;
    	cin>>fornitore_f[i].nomefornitore;
    	cout<<"INSERIRE CITTA-SEDE DEL FORNITORE"<<endl;
    	cin>>fornitore_f[i].citta;
    	cout<<"INSERIRE IL GIORNO DELLA FORNITURA"<<endl;
    	cin>>fornitore_f[i].datafornitura.giorno;
    	cout<<"INSERIRE IL MESE DELLA FORNITURA"<<endl;
    	cin>>fornitore_f[i].datafornitura.mese;
    	cout<<"INSERIRE L'ANNO DELLA FORNITURA"<<endl;
    	cin>>fornitore_f[i].datafornitura.anno;
    	cout<<""<<endl;
    	cout<<""<<endl;
        }
    }
    
    void RICERCABARI(modellofornitore fornitore_f[100],int dim_f,string ricerca)
    {
    	string bari;
    	for(int i=0;i<dim_f;i++) 
    	{
    		if(fornitore_f[i].citta==bari) 
    		{
    			cout<<""<<endl;
    	        cout<<""<<endl;
    		    cout<<"INFORMAZIONI DEL FORNITORE/FORNITORE CHE OPERA/ANO A BARI"<<endl;
    	        cout<<""<<endl;
    	        cout<<""<<endl;
    	        cout<<"MARCA DEL FORNITORE"<<fornitore_f[i].marca<<endl;
    	        cout<<"CODICE PARTITA IVA DEL FORNITORE"<<fornitore_f[i].partitaiva<<endl;
    	        cout<<"IL NOME DEL FORNITORE"<<fornitore_f[i].nomefornitore<<endl;
    	        cout<<"IL GIORNO DELLA FORNITURA"<<fornitore_f[i].datafornitura.giorno<<endl;
    	        cout<<"IL MESE DELLA FORNITURA"<<fornitore_f[i].datafornitura.mese<<endl;
    	        cout<<"L'ANNO DELLA FORNITURA"<<fornitore_f[i].datafornitura.anno<<endl;
    	        cout<<""<<endl;
    	        cout<<""<<endl;
    	        
    			
            }
    	}
    }
    
    
    int main()
    {
    	int dim;
    	string ricerca;
    	modelloprodotto prodotto[MAX];
    	dim=INSERIMENTODIMENSIONE();
    	RIEMPIMENTOPRODOTTI(prodotto,dim);
    	modellofornitore fornitore[MAX];
    	RIEMPIMENTOFORNITORI(fornitore,dim);
    	RICERCABARI(fornitore,dim,ricerca);
    	system("pause");
    } 
    ecco fatto sul problema di prima sono andato avanti ora devo creare un ciclo di ricerca che stampi a video le informazioni dei "fornitori" di bari che ci sono nel vettore, ho provato a farlo (ricercabari) ma non funziona,qualcuno sa come aiutarmi?
  • Re: Tabella (vettore di struct)

    
    if(fornitore_f[i].citta=="bari") 
    
  • Re: Tabella (vettore di struct)

    Grazie ,solo che ora andando avanti ho riscontrato un' altro problema nel case 3 (procedura CONTROLLOCODPROD) una volta inserito in input il codice prodotto che verrà cercato nella tabella dei prodotti dove devo visualizzare la marca e cercarla nella tabella dei fornitori visualizzando le informazioni dei fornitori di quella marca,se qualcuno mi riesce ad aiutare mi farebbe piacere dato che devo presentarlo tra poco.
    #include <iostream>
    #include <string>
    #include <cmath>
    using namespace std;
    const int MAX=100;
    
    
    struct modellodata
    {
    	int giorno;
    	int mese;
    	int anno;
    };
    
    
    struct modelloprodotto
     	{
     		int codicenumerico;
     		string nome;
     		string marca;
     		float prezzo;
     		modellodata dataprod;
     		modellodata datascad;
    	};
    	
    	
    struct modellofornitore
     	{
     		string marca;
     		int partitaiva;
     		string nomefornitore;
     		string citta;
     		modellodata datafornitura;
     		
    	};
    	
    	
    int INSERIMENTODIMENSIONE()
    {
    	int dim;
    	do 
    	{
    		cout<<"QUANTI PRODOTTI/FORNITORI SI VUOLE INSERIRE ? "<<endl;
    		cin>>dim;
        } while(dim<1|| dim>MAX);
        return dim;
    }
    
    
    void MENU()
    {
    	cout<<"Scegli una delle seguenti procedure da visualizzare:"<<endl;
    		cout<<""<<endl;
    	    cout<<""<<endl;	
    	cout<<"1 Visualizza tutte le informazione dei fornitori di bari"<<endl;
    	cout<<"2 Visualizza i nomi dei fornitori della Barilla di Taranto con Fornitura ad Aprile"<<endl;
    	cout<<"3 Inserire codice prodotto e visualizzare le informazioni del prodotto della marca stessa"<<endl;
    		cout<<""<<endl;
    	    cout<<""<<endl;	
    	
    }
     
    
    
    void RIEMPIMENTOPRODOTTI(modelloprodotto prodotto_f[100],int dim_f)
    {
    	for(int i=0;i<dim_f;i++) 
    	{
    		cout<<"INSERIMENTO DEL PRODOTTO"<<endl;
    		cout<<""<<endl;
    		cout<<""<<endl;
    		cout<<"INSERIRE IL CODICE NUMERICO DEL PROD"<<endl;
    		cin>>prodotto_f[i].codicenumerico;
    		cout<<"INSERIRE NOME PROD"<<endl;
    		cin>>prodotto_f[i].nome;
    		cout<<"INSERIRE MARCA PROD"<<endl;
    		cin>>prodotto_f[i].marca;
    		cout<<"INSERIRE PREZZO PROD"<<endl;
    		cin>>prodotto_f[i].prezzo;
    		cout<<"INSERIRE GIORNO DELLA DATA DI PRODUZIONE DEL PROD"<<endl;
    		cin>>prodotto_f[i].dataprod.giorno;
    		cout<<"INSERIRE MESE DELLA DATA DI PRODUZIONE DEL PROD"<<endl;
    		cin>>prodotto_f[i].dataprod.mese;
    		cout<<"INSERIRE ANNO DELLA DATA DI PRODUZIONE DEL PROD"<<endl;
    		cin>>prodotto_f[i].dataprod.anno;
    		cout<<"INSERIRE GIORNO DELLA DATA DI SCADENZA DEL PROD"<<endl;
    		cin>>prodotto_f[i].datascad.giorno;
    		cout<<"INSERIRE MESE DELLA DATA DI SCADENZA DEL PROD"<<endl;
    		cin>>prodotto_f[i].datascad.mese;
    		cout<<"INSERIRE ANNO DELLA DATA DI SCADENZA DEL PROD"<<endl;
    		cin>>prodotto_f[i].datascad.anno;	
    		cout<<""<<endl;
    		cout<<""<<endl;
        }
    }
    
    
    void RIEMPIMENTOFORNITORI(modellofornitore fornitore_f[100],int dim_f)
    {
    	for(int i=0;i<dim_f;i++) 
    	{
    	cout<<""<<endl;
    	cout<<""<<endl;
    	cout<<"INSERIMENTO INFORMAZIONI DEL FORNITORE"<<endl;
    	cout<<""<<endl;
    	cout<<""<<endl;
    	cout<<"INSERIRE MARCA DEL FORNITORE"<<endl;
    	cin>>fornitore_f[i].marca;
    	cout<<"INSERIRE CODICE PARTITA IVA DEL FORNITORE"<<endl;
    	cin>>fornitore_f[i].partitaiva;
    	cout<<"INSERIRE IL NOME DEL FORNITORE"<<endl;
    	cin>>fornitore_f[i].nomefornitore;
    	cout<<"INSERIRE CITTA-SEDE DEL FORNITORE"<<endl;
    	cin>>fornitore_f[i].citta;
    	cout<<"INSERIRE IL GIORNO DELLA FORNITURA"<<endl;
    	cin>>fornitore_f[i].datafornitura.giorno;
    	cout<<"INSERIRE IL MESE DELLA FORNITURA"<<endl;
    	cin>>fornitore_f[i].datafornitura.mese;
    	cout<<"INSERIRE L'ANNO DELLA FORNITURA"<<endl;
    	cin>>fornitore_f[i].datafornitura.anno;
    	cout<<""<<endl;
    	cout<<""<<endl;
        }
    }
    
    void RICERCABARI(modellofornitore fornitore_f[100],int dim_f)
    {
    	for(int i=0;i<dim_f;i++) 
    	{
    		if(fornitore_f[i].citta=="Bari") 
    		{
    			cout<<""<<endl;
    	        cout<<""<<endl;
    		    cout<<"INFORMAZIONI DEL FORNITORE/FORNITORE CHE OPERA/ANO A BARI"<<endl;
    	        cout<<""<<endl;
    	        cout<<""<<endl;
    	        cout<<"MARCA DEL FORNITORE"<<fornitore_f[i].marca<<endl;
    	        cout<<"CODICE PARTITA IVA DEL FORNITORE"<<fornitore_f[i].partitaiva<<endl;
    	        cout<<"IL NOME DEL FORNITORE"<<fornitore_f[i].nomefornitore<<endl;
    	        cout<<"IL GIORNO DELLA FORNITURA"<<fornitore_f[i].datafornitura.giorno<<endl;
    	        cout<<"IL MESE DELLA FORNITURA"<<fornitore_f[i].datafornitura.mese<<endl;
    	        cout<<"L'ANNO DELLA FORNITURA"<<fornitore_f[i].datafornitura.anno<<endl;
    	        cout<<""<<endl;
    	        cout<<""<<endl;
    	        
    			
            }
    	}
    }
    
    
    void RICERCABARILLATARANTO(modellofornitore fornitore_f[100],int dim_f)
    {
    	for(int i=0;i<dim_f;i++) 
    	{
    		if(fornitore_f[i].marca=="Barilla") 
    		{
    			if(fornitore_f[i].citta=="Taranto") 
    		    {
    		    	if(fornitore_f[i].datafornitura.mese=4) //4 perchè la variabile mese nella struct si trova di tipo int
    		        {
    		        	cout<<"IL NOME DEL FORNITORE DELLA BARILLA DI TARANTO CHE HA FORNITO PRODOTTI AD APRILE :"<<fornitore_f[i].nomefornitore<<endl;
    		        	
    		    	
    			    }
    		    	
    			}
    			cout<<""<<endl;
    	        cout<<""<<endl;	
            }
    	}
    }
    
    
    void CONTROLLOCODPROD(modelloprodotto prodotto_f[100],modellofornitore fornitore_f[100],int dim_f,char ricerca)
    {
        cout<<"INSERIRE CODICE PRODOTTO DA CONTROLLARE"<<endl;
    	cin>>ricerca;
    	for(int i=0;i<dim_f;i++) 
    	{
    		if(prodotto_f[i].codicenumerico==ricerca) 
    		{
    			cout<<"LA MARCA DI QUESTO PRODOTTO E'"<<prodotto_f[i].marca<<endl;
    	        if(prodotto_f[i].marca==fornitore_f[i].marca) 
    		    {
    	            cout<<"CODICE PARTITA IVA DI QUESTO FORNITORE"<<fornitore_f[i].partitaiva<<endl;
    	            cout<<"NOME DI QUESTO FORNITORE"<<fornitore_f[i].nomefornitore<<endl;
    	            cout<<"CITTA-SEDE DI QUESTO FORNITORE"<<fornitore_f[i].citta<<endl;
    	            cout<<"IL GIORNO DELLA FORNITURA"<<fornitore_f[i].datafornitura.giorno<<endl;
    	            cout<<"IL MESE DELLA FORNITURA"<<fornitore_f[i].datafornitura.mese<<endl;
    	            cout<<"L'ANNO DELLA FORNITURA"<<fornitore_f[i].datafornitura.anno<<endl;
                }
    	    
    		}
        }
    }
    
    
    int main()
    {
    	int dim,SCELTA;
    	char ricerca;
    	modelloprodotto prodotto[MAX];
    	dim=INSERIMENTODIMENSIONE();
    	RIEMPIMENTOPRODOTTI(prodotto,dim);
    	modellofornitore fornitore[MAX];
    	RIEMPIMENTOFORNITORI(fornitore,dim);
    	MENU();
        cin>>SCELTA;
        switch (SCELTA )
    	{
    		case 1:RICERCABARI(fornitore,dim);
    		break;
    	    case 2:RICERCABARILLATARANTO(fornitore,dim);
    	    break;
    	    case 3:CONTROLLOCODPROD(prodotto,fornitore,dim,ricerca);
    	    break;   
        }
    	system("pause");
    }
  • Re: Tabella (vettore di struct)

    Guarda che quella if con il confronto con "Bari" è sbagliato, forse non l'avevi capito
  • Re: Tabella (vettore di struct)

    oregon ha scritto:


    Guarda che quella if con il confronto con "Bari" è sbagliato, forse non l'avevi capito
    in realtà funziona bene
  • Re: Tabella (vettore di struct)

    Non avevo visto che erano oggetti string ... ok
  • Re: Tabella (vettore di struct)

    Si vede che stai andando di fretta. Il codice prodotto è dichiarato come int, però la variabile ricerca è di tipo char. Poi se lo chiedi all'utente direttamente nella funzione CONTROLLOCODPROD, a che serve passarglielo come parametro? dichiara int ricerca direttamente nella funzione.
Devi accedere o registrarti per scrivere nel forum
8 risposte