Volevo scrivere un programma per l’inserimento e visualizzazione di un gruppo di automobili descritte da marca, modello e numero di unità vendute, con il gruppo di automobili inserito dall’utente del programma. Ho dunque scritto un menù che mi permette di scegliere tra visualizzare l'elenco o aggiungere un'auto. Tuttavia ,inserito l'azione di inserimento, il programma termina. Ecco il codice:
Dov'è l'errore?codice:#include <stdio.h> #define DIM 31 #define MAX 30 #define MENU 0 #define INS 1 #define VIS 2 #define OUT 100 int indice=0; struct auto { char marca[DIM]; char modello[DIM]; int vend; }; struct auto auto[MAX]; int men_auto(void); int ins_auto(int); void vis_elenco(void); void vis_auto(struct auto *); int main() { int scelta = MENU; while(scelta!=OUT) { switch(scelta) { case MENU: scelta = men_auto(); if(scelta == MENU) scelta = OUT; break; case INS: indice = ins_auto(indice); scelta = MENU; break; case VIS: vis_elenco(); scelta = MENU; break;} system("PAUSE"); return 0; } } /* menù */ int men_auto(void) { int scelta; char invio; int true = 1; while(true){ printf("\n\n\n\t\t\t SALONE AUTO"); printf("\n\n\n\t\t\t 1. Immissione auto"); printf("\n\n\t\t\t 2. Visualizza elenco"); printf("\n\n\t\t\t 0. Fine"); printf("\n\n\n\t\t\t\t Scegliere una opzione: "); scanf("\n%d", &scelta); printf("\n\n\n\n\n\n\n\n\n"); switch(scelta) { case 0: return (scelta); case 1: return (scelta); case 2: return (scelta); default: break; } } return 0; } /* Inserisce auto */ int ins_auto(int pos) { char invio; if(pos>=MAX) { printf(" Non si possono inserire altre auto"); scanf("%c", &invio); return(pos); } printf("\n\t\tINSERIMENTO AUTO"); printf("\n\t\t---------------\n\n"); printf("Marca: "); gets(auto[pos].marca); printf("\nModello : "); gets(auto[pos].modello); printf("\nNumero vendute : "); scanf("%d", &auto[pos].vend); scanf("%c", &invio); pos++; return(pos); } /* Visualizza elenco*/ void vis_auto(struct auto *p) { printf("\n\n--------------------\n"); printf("\n\t\tMarca: %s", p->marca); printf("\n\t\tModello : %s", p->modello); printf("\n\t\tNumero vendute : %d", p->vend); printf("\n\n--------------------\n"); } /* Visualizza elenco */ void vis_elenco(void) { int i; char pausa; struct auto *ps = &auto[0]; for (i=0; i<indice; i++) { vis_auto(ps++); scanf("%c", &pausa); } }

Rispondi quotando