Non capisco dove sta il problema.. il compilatore non da errore ed esegue correttamente il programma, ma quando cerco di visualizzare le info relative ad un prodotto alla voce prezzo mi stampa 0.00 semprecodice://archivio di un negozio con relativa vendita del prodotto #include <stdio.h> #include<stdlib.h> #include<string.h> typedef enum{LIB_T, MAG_T}tipo; typedef struct{ char codice[8]; double prezzo; tipo t; int quantita; union{ struct{ char titolo [30]; char autore [15]; int pagine; }libro; struct{ char motivo [30]; char colore [10]; enum{S,M,L,XL,XXL} taglia; }maglietta; }prodotto; }archivio; archivio articolo [50]; unsigned int num_cod=0; int n=0; //contatore int vendita=0; //contatore delle vendite double denaro=0; // contatore incassi int num_lib,num_mag; void inserire_articolo(void); void ricerca_articolo(); void visualizza_articolo(void); void compra_articolo (void); void visualizza_vendite (void); int main (void){ int scelta; do{ printf("Menu archivio negozio\n"); printf("\t 1.Inserisci un nuovo articolo\n"); printf("\t 2.Ricerca articolo per codice\n"); printf("\t 3.Visualizza articoli in magazzino\n"); printf("\t 4.Compra online\n"); printf("\t 5.Visualizza rendiconto vendite\n"); printf("\t 6.Esci\n"); scanf("%d",&scelta); system("cls"); fflush(stdin); switch(scelta){ case 1: printf("-Aggiunta prodotto\n"); printf("Inserici il tipo di articolo da aggiungere:\n"); printf("0- LIBRO\n"); printf("1- MAGLIETTA\n"); printf("\nScelta: "); scanf("%d", &articolo[n].t); inserire_articolo(); break; case 2: ricerca_articolo(); break; case 3: visualizza_articolo(); break; case 4: compra_articolo (); break; case 5: visualizza_vendite(); break; case 6: break; default: printf("operazione non consentita\n"); } } while(scelta!=6); system ("pause"); return 0; } void inserire_articolo(){ double prezzo; if(articolo[n].t==LIB_T){ num_lib=num_lib+1; printf("Inserisci dati libro\n"); printf("inserisci il prezzo\n"); scanf("%d",&articolo[n].prezzo); printf("inserisci la quantita disponibile\n"); scanf("%d",&articolo[n].quantita); printf("Inserisci il titolo del libro\n"); fflush(stdin); gets(articolo[n].prodotto.libro.titolo); printf("Inserisci l'autore del libro\n"); gets(articolo[n].prodotto.libro.autore); printf("Inserisci il numero delle pagine del libro\n"); scanf("%d",&articolo[n].prodotto.libro.pagine); itoa(10000000+n,articolo[n].codice,10); printf("Libro inserito con successo codiceID %s",articolo[n].codice); printf("\n"); } else{ num_mag=num_mag+1; printf("inserisci dati maglietta\n"); printf("inserisci il prezzo\n"); scanf("%d",&articolo[n].prezzo); printf("inserisci la quantita disponibile\n"); scanf("%d",&articolo[n].quantita); fflush(stdin); printf("Inserisci motivo maglietta\n"); gets(articolo[n].prodotto.maglietta.motivo); printf("Inserisci colore maglietta\n"); gets(articolo[n].prodotto.maglietta.colore); printf("Inserisci taglia maglietta:S=0,M=1,L=2,XL=3,XXL=4\n"); scanf("%d",&articolo[n].prodotto.maglietta.taglia); itoa(10000000+n,articolo[n].codice,10); printf("\nMaglietta inserito con successo codice ID:%s",articolo[n].codice); printf("\n"); } n++; } void ricerca_articolo(){ int i; char codice[8]; if(num_mag==0&&num_lib==0) printf("nessun prodotto presente in magazzino.\nPremi per ritornare al menu\n"); else printf("inserisci il codice dell'articolo da ricercare\n"); scanf("%s",codice); for(i=0;i<n;i++){ if(strcmp(codice,articolo[i].codice)==0){ printf("prodotto presente in magazzino\n"); if(articolo[i].t==LIB_T){ printf("\tTitolo: %s\n",articolo[i].prodotto.libro.titolo); printf("\tAutore: %s\n",articolo[i].prodotto.libro.autore); printf("\tNumero pagine: %d\n",articolo[i].prodotto.libro.pagine); printf("\tPrezzo: %.2d E\n",articolo[i].prezzo); printf("\tQuantita': %d\n",articolo[i].quantita); } else{ printf("\tMotivo: %s\n", articolo[i].prodotto.maglietta.motivo); printf("\tColore: %s\n", articolo[i].prodotto.maglietta.colore); printf("\tTaglia: %d\n",articolo[i].prodotto.maglietta.taglia); printf("\tPrezzo: %.2f E\n",articolo[i].prezzo); printf("\tQuantita': %d\n", articolo[i].quantita); } } else printf("Prodotto non presente in magazzino\n"); } } void visualizza_articolo(){ int i; if(num_mag==0&&num_lib==0) printf("nessun prodotto presente in magazzino.\nPremi per ritornare al menu\n"); else printf("Visualizzo articoli in magazzino\n"); for(i=0;i<n;i++){ if(articolo[i].t==LIB_T){ printf("Dati libro\n"); printf("\tTitolo: %s\n",articolo[i].prodotto.libro.titolo); printf("\tAutore: %s\n",articolo[i].prodotto.libro.autore); printf("\tNumero pagine: %d\n",articolo[i].prodotto.libro.pagine); printf("\tPrezzo: %.2f E\n",articolo[i].prezzo); printf("\tQuantita': %d\n",articolo[i].quantita); } else{ printf("dati maglietta\n"); printf("\tMotivo: %s\n", articolo[i].prodotto.maglietta.motivo); printf("\tColore: %s\n", articolo[i].prodotto.maglietta.colore); printf("\tTaglia: %d\n",articolo[i].prodotto.maglietta.taglia); printf("\tPrezzo: %.2f E\n",articolo[i].prezzo); printf("\tQuantita': %d\n", articolo[i].quantita); } } } void compra_articolo(){ int tipo,quant, i; char titolo[30]; printf("Cosa desideri acquistare? premi 0 per libro o 1 per maglietta\n"); scanf("%d",&tipo); for(i=0;i<n;i++){ if(tipo==0){ if(num_lib==0) printf("Nessun libro presente in magazzino\n"); else{ printf("Quale libro vuoi acquistare?\n"); printf("inserisci il titolo\n"); fflush(stdin); gets(titolo); if(strcmp(titolo,articolo[i].prodotto.libro.titolo)==0){ printf("Libro presente in magazzino, inserisci la quantita desiderata per l'acquisto\n"); scanf("%d",&quant); if(quant>articolo[i].quantita) printf("La quantita richiesta non è al momento disponibile\n"); else{ articolo[i].quantita-=quant; vendita=quant; denaro=quant*articolo[i].prezzo; } } else printf("il libro richiesto non è presente in magazzino\n"); } } else if(tipo==1){ if(num_mag==0) printf("Nessuna maglietta presente in magazzino\n"); else{ printf("Quante magliette vuoi acquistare\n"); scanf("%d",&quant); if(quant>articolo[i].quantita) printf("La quantita richiesta non è al momento disponibile\n"); else{ articolo[i].quantita-=quant; vendita=quant; denaro=quant*articolo[i].prezzo; } } } } } void visualizza_vendite(){ printf("il numero degli articoli venduti è %d, con un incasso totale di %.2d E\n",vendita,denaro); }