retnI W
18-08-2010, 15:51
Un programma stupido ed inefficiente (manca un costrutto ciclico per essere "buono") scritto solo per allenarmi coni tipi complessi e il costrutto switch!
#include <stdio.h>
#define LunghezzaNome 20
void main ()
{
int comando;
typedef struct {char nome[LunghezzaNome];
char categoria;
int retribuzione;
}dipendenti;
dipendenti dipendente;
printf ("inserire 0 per uscire, 1 per definire il nome, 2 per definire la categoria, 3 per definire la retribuzione\n");
scanf ("%d", &comando);
switch (comando)
{
case 0: printf ("arrivederci!!");
break;
case 1: scanf ("%s", &dipendente.nome);
break;
case 2: printf ("inserire a = autista, c = controllore\n");
scanf ("%c", &dipendente.categoria);
break;
case 3: scanf ("%d", &dipendente.retribuzione);
break;
}
printf ("inserire 0 per uscire, 1 per visualizzare il nome, 2 per visualizzare la categoria, 3 per visualizzare la retribuzione\n");
scanf ("%d", &comando);
switch (comando)
{
case 0: printf ("arrivederci!!");
break;
case 1: printf ("%s\n", dipendente.nome);
break;
case 2: if (dipendente.categoria == 'a')
printf ("autista\n");
else if (dipendente.categoria == 'c')
printf ("controllore\n");
break;
case 3: printf ("%d\n", dipendente.retribuzione);
break;
}
getch ();
}
Quando compilo ed eseguo, inserisco 2 per definire la categoria ma il programma salta direttamente al printf fuori dello switch non permettendomi di selezionare la categoria stessa. Cosa c'è che non va? Avevo pensato ad un errore nella parte:
case 2: printf ("inserire a = autista, c = controllore\n");
scanf ("%c", &dipendente.categoria);
break;
...ditemi voi, grazie!
#include <stdio.h>
#define LunghezzaNome 20
void main ()
{
int comando;
typedef struct {char nome[LunghezzaNome];
char categoria;
int retribuzione;
}dipendenti;
dipendenti dipendente;
printf ("inserire 0 per uscire, 1 per definire il nome, 2 per definire la categoria, 3 per definire la retribuzione\n");
scanf ("%d", &comando);
switch (comando)
{
case 0: printf ("arrivederci!!");
break;
case 1: scanf ("%s", &dipendente.nome);
break;
case 2: printf ("inserire a = autista, c = controllore\n");
scanf ("%c", &dipendente.categoria);
break;
case 3: scanf ("%d", &dipendente.retribuzione);
break;
}
printf ("inserire 0 per uscire, 1 per visualizzare il nome, 2 per visualizzare la categoria, 3 per visualizzare la retribuzione\n");
scanf ("%d", &comando);
switch (comando)
{
case 0: printf ("arrivederci!!");
break;
case 1: printf ("%s\n", dipendente.nome);
break;
case 2: if (dipendente.categoria == 'a')
printf ("autista\n");
else if (dipendente.categoria == 'c')
printf ("controllore\n");
break;
case 3: printf ("%d\n", dipendente.retribuzione);
break;
}
getch ();
}
Quando compilo ed eseguo, inserisco 2 per definire la categoria ma il programma salta direttamente al printf fuori dello switch non permettendomi di selezionare la categoria stessa. Cosa c'è che non va? Avevo pensato ad un errore nella parte:
case 2: printf ("inserire a = autista, c = controllore\n");
scanf ("%c", &dipendente.categoria);
break;
...ditemi voi, grazie!