Effettivamente modificando il tipo del campo dipendente.categoria da char a int e modificando la parte esecutiva a dovere, tutto funziona.
Codice:
#include <stdio.h>
#define LunghezzaNome 20
void main ()
{
int comando;
typedef struct {char nome[LunghezzaNome];
int 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 1 = autista, 2 = controllore\n");
scanf ("%d", &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 == 1)
printf ("autista\n");
else if (dipendente.categoria == 2)
printf ("controllore\n");
break;
case 3: printf ("%d\n", dipendente.retribuzione);
break;
}
getch ();
}
Quindi per non avere problemi mi sconsigliare le variabili "char" per le scelte? Il mio obiettivo è quello di creare programmi lineari e sintatticamente corretti dovendo dare SOLO un esame di informatica (a breve) nel mio corso di laurea.