Mi dareste una mano a risolvere l algoritmo? dire che sto impazzendo è dire poco...codice:/*programma in C che mi permetta di gestire un numero di n merci all'interno di un magazzino. Inoltre, dopo aver caricato la merce (ancora non ho studiato i file e non so se possano servire a migliorare e/o semplificare il mio algortimo) ho la possibilità di: -Visualizzare una lista con tutta la merce,il relativo codice e quantità; -Eseguire un ordine( acquistare merce e quindi detrarla dalla quantità del magazzino); -Visualizzare tutti gli ordini eseguiti precedentemente; Utilizza un menù di scelta che gestisce le 3 funzioni*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #define dim 20 struct prodotto{ int codice; char descrizione[20]; int quantita; }; struct prodotto magazzino[1000]; void menu(); void ordine(struct prodotto*p); void carica(struct prodotto*p); void visualizza(); void visualizzazione(); int main() { printf(" *CARICAMENTO MERCE*\n\n"); carica(&magazzino); menu(); return 0; } void menu() { int scelta; char torna; do { system("cls"); printf("Menu' principale \n\n"); /*Inizio elenco delle funzioni disponibili in output*/ printf(" [1]: VISUALIZZA I PRODOTTI\n"); printf(" [2]: ESEGUI UN ORDINE\n"); printf(" [3]: VISUALIZZA ORDINI GIA' ESEGUITI\n"); printf(" [4]: ESCI\n"); /*fine elenco funzioni*/ printf("\nEffettua la tua scelta: "); scanf("%d",&scelta); /*Inizio struttura di controllo per permettere la scelta della funzione desiderabile, è possibile inserire altre funzioni*/ switch (scelta) { case 1: system("cls"); visualizza(); system("pause"); system("cls"); break; case 2: system("cls"); ordine(& magazzino); system("pause"); system("cls"); break; case 3: system("cls"); system("pause"); system("cls"); break; case 4: system("cls"); printf("\aHai premuto il tasto per uscire\n\n\n"); break; default: printf("Numero non valido \n"); } printf("Si desidera tornare al Menu' Principale?\n\n"); printf("[y] Si, desidero tornare al Menu' Principale \n"); printf("[n] No, desidero uscire \n\n"); printf("Effettua la tua scelta: "); scanf("%s",&torna); } while (torna!='n'); } /*Inizio implementazione funzioni personalizzate, È possibile modificarle o aggiungere altre funzioni*/ void ordine(struct prodotto*p){ char x[20]; int y; visualizzazione(); printf(" *ORDINE*\n\n"); printf("Inserisci il nome del prodotto da acquistare: "); scanf("%s", x); printf("Inserisci la quantita: "); scanf("%d",&y); if (strcmp(x,p->descrizione)==0){ p->quantita=(p->quantita)-y; } else{ printf("prodotto non presente nel magazzino\n\n"); } if(y<p->quantita){ printf("\nEcco il tuo ordine: "); printf("%s %d",x,y); printf("\n\n\n"); } else{ printf("quantita' richiesta maggiore di quella presente nel magazzino\n"); }} void carica(struct prodotto*p){ int i; for(i=0;i<dim;i++){ printf("Inserisci il codice del prodotto: "); scanf("%d",&(p->codice)); fflush(stdin); printf("\n\aInserisci il nome del prodotto: "); gets(p->descrizione); printf("\n\aInserisci la quantita' del prodotto: "); scanf("%d",&(p->quantita)); printf("\n"); } printf("\n\n\n\n\n\n\a"); return; } void visualizza() { int i; for(i=0;i<dim;i++) printf("Codice: %d \nNome: %s \nQuantita: %d\n\n", magazzino[i].codice, magazzino[i].descrizione,magazzino[i].quantita); return; } void visualizzazione() { int i; printf(" *INFO PRODOTTI*\n\n"); for(i=0;i<dim;i++) printf("Codice: %d Nome: %s\n\n", magazzino[i].codice, magazzino[i].descrizione); return; }