codice:int main() { Prodotto prodotti[PRODOTTO]; Venditore venditori[VENDITORE]; Vendita vendite[VENDITE]; int n_vend=0; int n_prod=0; int n_v=0; int input; int anno, mese, giorno; do { stampa_menu(); do { printf("Inserisci un codice.\n"); scanf("%d", &input); puts(""); }while(input < 0 || input > 7); switch (input) { case 1: /*AGGIUNGI UN VENDITORE*/ { if ((aggiungi_venditore(venditori, &n_vend))==1) { stampa_venditori(venditori, n_vend); } break; } case 2: /*AGGIUNGI UN PRODOTTO*/ { if ((aggiungi_prodotto(prodotti, &n_prod))==1) { stampa_prodotti(prodotti, n_prod); } break; } case 3: /*INSERISCI VENDITA*/ { if((aggiungi_vendita(venditori, vendite, prodotti, n_vend, &n_v, n_prod))==1) { stampa_vendite(vendite, n_v); } break; } case 4: /*CLASSIFICA GLOBALE*/ { if(n_v>0) { ordina_vendite_idVend(vendite,n_v); stampa_vendite_totali_venditori(vendite, n_v); puts(""); ordina_vendite_idProd(vendite, n_v); stampa_vendite(vendite, n_v); stampa_vendite_totali_prodotti(vendite,n_v); } break; } case 5: /*CLASSIFICA GIORNALIERA*/ { if(n_v>0) { printf("Inserisci una data valida di vendita!!\n"); printf("inserisci la data: gg mm aaaa"); scanf("%d %d %d",&giorno, &mese, &anno); ordina_vendite_idVend(vendite,n_v); stampa_vendite_giornaliera_venditori(vendite,n_v,anno,mese,giorno); } break; } case 7: { stampa_venditori(venditori, n_vend); break; } } }while(input!=0); return 0; } void stampa_menu() { printf("\n--------------------------------ELENCO OPERAZIONI-------------------------------\n"); printf("\t\t[1] Per aggiungere un venditore.\n"); printf("\t\t[2] Per aggiungere un prodotto.\n"); printf("\t\t[3] Per inserire una vendita.\n"); //printf("\t\t[4] Per stampare le vendite totali dei prodotti (globale).\n"); printf("\t\t[4] Per visualizzare la classifica globale.\n"); printf("\t\t[5] Per visualizzare la classifica di un giorno.\n"); //printf("[6] Classifica prodotti piu venduti in tutto il periodo.\n"); printf("\t\t[7] Per stampare l'array venditori.\n"); printf("\t\t[0] ESCI.\n\n\n"); } /*////////////////////////////////FUNZIONI PER I VENDITORI\\\\\\\\\\\\\\\\\\\\\\*/ int aggiungi_venditore(Venditore *vend, int *n_vend) { int i=0; int cod; do { printf("Inserisci il codice del venditore ( maggiore di 0 ): "); scanf("%d", &cod); puts(""); }while(cod <=0); for(i=0; i<(*n_vend); i++) { if (vend[i].cod_v == cod) { printf("\nEsiste gia\' un venditore con quel id.\n"); return -1; } } vend[i] = leggi_venditore(cod); (*n_vend)++; /*incremento la variabile che conta il numero dei venditori presenti nell'array*/ return 1; } Venditore leggi_venditore(int cod) { Venditore vend; vend.cod_v=cod; printf("\nInserisci il nome del venditore: "); scanf("%s", vend.nome); printf("\nInserisci il cognome del venditore: "); scanf("%s", vend.cognome); return vend; } void stampa_venditori(Venditore* vend, int n_vend) { int i; for (i=0; i<n_vend; i++) { printf("id venditore=%d\t", vend[i].cod_v); printf("nome = %s\t", vend[i].nome); printf("cognome = %s\t", vend[i].cognome); puts(""); } } /*//////////////FUNZIONE PER I PRODOTTI\\\\\\\\\\\\\\\\\\\\\\\\*/ int aggiungi_prodotto(Prodotto* prod, int *n_prod) { int i=0; int cod; do { printf("Inserisci il codice del prodotto ( maggiore di 0 ): "); scanf("%d", &cod); puts(""); }while(cod <=0); for(i=0; i<(*n_prod); i++) { if (prod[i].cod_p == cod) { printf("\nEsiste gia\' un prodoto con quel id.\n"); return -1; } } prod[i] = leggi_prodotto(cod); (*n_prod)++; /*incremento la variabile che conta il numero dei prodotti presenti nell'array*/ return 1; } Prodotto leggi_prodotto(int cod) { Prodotto prod; prod.cod_p=cod; printf("\nInserisci il nome del prodotto: "); scanf("%s", prod.nome); printf("\nInserisci il prezzo del prodotto: "); scanf("%d", &prod.prezzo); return prod; } void stampa_prodotti(Prodotto* prod, int n_prod) { int i; for (i=0; i<n_prod; i++) { printf("\nid prodotto=%d\t", prod[i].cod_p); printf("nome = %s\t", prod[i].nome); printf("prezzo = %d\t", prod[i].prezzo); puts(""); } } /*////////////FUNZIONI GENERALI\\\\\\\\\\\\\\\\\\\\\\\\*/ int trova_venditore(Venditore *vend, int n_vend) { int i=0; int cod; do { printf("Inserisci il codice del venditore ( maggiore di 0 ): "); scanf("%d", &cod); puts(""); }while(cod <=0); for(i=0; i<n_vend; i++) { if (vend[i].cod_v == cod) { return cod; } } printf("\nNon esiste nessun venditore con quel ID."); return -1; } int trova_prodotto(Prodotto *prod, int n_prod) { int i=0; int cod; do { printf("Inserisci il codice del prodotto ( maggiore di 0 ): "); scanf("%d", &cod); puts(""); }while(cod <=0); for(i=0; i<n_prod; i++) { if (prod[i].cod_p == cod) { return cod; } } printf("\nNon esiste nessun prodotto con quel ID."); return -1; } /*//////////////////FUNZIONI PER LE VENDITE\\\\\\\\\\\\\\\\\\\\\\\*/ int aggiungi_vendita(Venditore *vend, Vendita *ven, Prodotto *prod, int n_vend, int *n_v, int n_prod) { int cod_v; int cod_p; cod_v=trova_venditore(vend, n_vend); if ( cod_v != -1) { cod_p=trova_prodotto(prod, n_prod); if (cod_p != -1) { ven[(*n_v)]=leggi_vendita(cod_v, cod_p); (*n_v)++; /*incremento il contatore delle vendite*/ return 1; } }else return -1; } Vendita leggi_vendita(int cod_v, int cod_p) { Vendita ven; ven.cod_v=cod_v; ven.cod_p=cod_p; printf("\nInserisci la quantita\' venduta: "); scanf("%d", &ven.quantita); printf("\nInserisci l'anno in cui e\' stato venduto: "); scanf("%d", &ven.anno); printf("\nInserisci il mese in cui e\' stato venduto: "); scanf("%d", &ven.mese); printf("\nInserisci il giorno in cui e\' stato venduto: "); scanf("%d", &ven.giorno); return ven; } void stampa_vendite(Vendita* ven, int n_v) { int i; for (i=0; i<n_v; i++) { printf("\nid venditore=%d\t", ven[i].cod_v); printf("\nid prodotto=%d\t", ven[i].cod_p); printf("\nquantita\' = %d\t", ven[i].quantita); printf("\nin data: %d-%d-%d\n", ven[i].giorno, ven[i].mese, ven[i].anno); puts(""); } } void ordina_vendite_idProd(Vendita *vend, int n_v)/*ordino le vendite per vend.cod_p*/ { int i=0; int a; Vendita v; for(i=0; i<n_v; i++) { for(a=i; a<n_v-1; a++) { if(vend[a].cod_p>vend[a+1].cod_p)/*ordino in modo crescente*/ { v=vend[a]; vend[a]=vend[a+1]; vend[a+1]=v; } } } } void ordina_vendite_idVend(Vendita *vend, int n_v)/*ordino le vendite per vend.cod_v*/ { int i=0; int a; Vendita v; for(i=0; i<n_v; i++) { for(a=i; a<n_v-1; a++) { if(vend[a].cod_v>vend[a+1].cod_v)/*ordino in modo crescente*/ { v=vend[a]; vend[a]=vend[a+1]; vend[a+1]=v; } } } } void stampa_vendite_giornaliera_venditori(Vendita *vend, int n_v, int anno, int mese, int giorno)/*classifica venditori giornaliera*/ { int i; int a; int cod_v; int qnt; printf("PERIODO SELEZIONATO: %d-%d-%d\n",giorno,mese,anno); for(i=0; i<n_v;) { cod_v=vend[i].cod_v; qnt=0; while(cod_v== vend[i].cod_v && i<n_v) { if (vend[i].anno==anno && vend[i].mese==mese && vend[i].giorno==giorno) { qnt+=vend[i].quantita; i++; } } printf("cod_v: %d\tquantita\' venduta in totale: %d\n",cod_v, qnt); } } void stampa_vendite_totali_venditori(Vendita *vend, int n_v)/*classifica venditori globale*/ { int i; int a; int cod_v; int qnt; printf("\n\t\tCLASSIFICA GLOBALE VENDITORI\n"); for(i=0; i<n_v;) { cod_v=vend[i].cod_v; qnt=0; while(cod_v== vend[i].cod_v && i<n_v) { qnt+=vend[i].quantita; i++; } printf("cod_v: %d\tquantita\' venduta in totale: %d\n",cod_v,qnt); } } void stampa_vendite_totali_prodotti(Vendita *vend, int n_v)/*classifica prodotti globale*/ { int i; int a; int cod_p; int qnt; int classifica[VENDITORE][2];/*nella prima colonna c'è il codice del prodotto, nella seconda la quantita totale venduta*/ int c=0; printf("\n\t\tCLASSIFICA GLOBALE PRODOTTI\n"); for(i=0; i<n_v;) { //cod_p=vend[i].cod_p; //qnt=0; classifica[c][0]=vend[i].cod_p; classifica[c][1]=0;/*quantita*/ while(classifica[c][0]== vend[i].cod_p && i<n_v) { //qnt+=vend[i].quantita; classifica[c][1]+=vend[i].quantita; i++; } c++; //printf("cod_p: %d\tquantita\' venduta in totale: %d\n",classifica[i][0],qnt); } for (i=0; i<n_v; i++) { printf("i=%d cod_p: %d\tquantita\' venduta in totale: %d\n",i, classifica[i][0],classifica[i][1]); } int temp[1][2]; int min; for(i=0; i<n_v-1; i++) { min = i; for(a=i+1; a<n_v; a++) { if(classifica[a][1]<classifica[min][1]) { min = a; } } temp[0][0] =classifica[min][0]; temp[0][1] =classifica[min][1]; classifica[min][0]=classifica[i][0]; classifica[min][1]=classifica[i][1]; classifica[i][0]=temp[0][0]; classifica[i][1]=temp[0][1]; } /* for (i=0; i<n_v; i++) { for(a=i+1; a<n_v-1; a++) { if(classifica[i][1]<classifica[a][1]) { tmp[0][0]=classifica[a][0]; tmp[0][1]=classifica[a][1]; classifica[a][0]=classifica[i][0]; classifica[a][1]=classifica[i][1]; classifica[i][0]=tmp[0][0]; classifica[i][0]=tmp[0][1]; } } }*/ for (i=0; i<n_v; i++) { printf("i=%d cod_p: %d\tquantita\' venduta in totale: %d\n",i, classifica[i][0],classifica[i][1]); } }