PDA

Visualizza la versione completa : [C]Tipi derivati composti tramite struttura


array96
29-12-2012, 19:14
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:


#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);
}
}


Dov'Ť l'errore?

oregon
29-12-2012, 19:52
Guarda dove hai messo il

return 0

nel main


P.S. Non usare la parola riservata "auto" nel programma

Loading