Ciao.
Ho questo dubbio: dovendo scrivere un programma nel quale si chiede all'utente di inserire un intero, corrispondente ad una certa operazione, ho inizialmente scritto una struttura di questo tipo:
Ho notato però che, inserendo un carattere (non un numero intero per intenderci), si verifica un comportamento in desiderato: il programma entra in loop e esegue continuamente le printf di "Inserisci un intero da 1 a 4" e "Operazione non valida!".codice:#import <stdio.h> int main(){ int i = 0; while(i!=4){ printf("Inserisci un intero da 1 a 3, 4 per uscire\n"); scanf("%d", &i); switch(i){ case 1: printf("Caso 1\n"); break; case 2: printf("Caso 2\n"); break; case 3: printf("Caso 3\n"); break; case 4: break; default: printf("Operazione non valida!\n"); break; } } return 0; }
Avrei risolto usando una struttura completamente differente:
Mi chiedo però se sia corretto agire in questo modo. Non c'è una soluzione differente che mi consenta di usare uno switch con gli interi senza dover utilizzare if e char?codice:#import <stdio.h> #import <string.h> int main(){ char input[3]; while(strcmp(input, "4")!=0){ printf("Inserisci un intero da 1 a 3, 4 per uscire\n"); scanf("%s", input); if(strcmp(input, "1")==0){ printf("Caso 1\n"); } else if(strcmp(input, "2")==0){ printf("Caso 2\n"); } else if(strcmp(input, "3")==0){ printf("Caso 3\n"); } else if(strcmp(input, "4")!=0){ printf("Operazione non valida!\n"); } } return 0; }
Grazie,![]()


Rispondi quotando