Switch ...case...il default non lo esegue!

di ZioPedro il
3 risposte

Buongiorno.

Da assoluto autodidatta (la mia email porta il segno dell'età) sto cercando di imparare qualcosa sul C.

Ho implementato una semplice calcolatrice con le 4 funzioni. Con if..else…va..

Con l'uso di switch case pure ma se immetto la scelta non rpevista mi salta il default e non riesco a capire il perchè. Sicuramente ne combino una grossa ma non capisco dove. Chiedo aiuto. Grazie.

#include <stdio.h>
#include <locale.h>
#include <stdlib.h>

int main()

{
   int operando1, operando2, risultato;
   char scelta;

   setlocale(LC_CTYPE, "italian");
   printf("Questo programma esegue l'operazione richiesta dall'utente in base alla lettera inserita\n\n");

   printf("a-A. Addizione\n");
   printf("b-B. Sottrazione\n");
   printf("c-C. Moltiplicazione\n");
   printf("d-D. Divisione\n");
   printf("\nDigita la lettera dell'operazione da eseguire: ");
   scanf("%c", &scelta);

   switch(scelta)
   {
       case 'a' :
       case 'A' :
           printf("Inserisci il valore del primo numero: ");
           scanf("%d", &operando1);
           printf("Inserisci il valore del secondo numero: ");
           scanf("%d", &operando2);

           risultato = operando1 + operando2;

           printf("Il risultato dell'operazione selezionata è %d", risultato);
           break;

       case 'b':
       case 'B':
           printf("Inserisci il valore del primo numero: ");
           scanf("%d", &operando1);
           printf("Inserisci il valore del secondo numero: ");
           scanf("%d", &operando2);

           risultato = operando1 - operando2;

           printf("Il risultato dell'operazione selezionata è %d", risultato);
           break;

       case 'c':
       case 'C':
           printf("Inserisci il valore del primo numero: ");
           scanf("%d", &operando1);
           printf("Inserisci il valore del secondo numero: ");
           scanf("%d", &operando2);

           risultato = operando1 * operando2;

           printf("Il risultato dell'operazione selezionata è %d", risultato);
           break;

       case 'd':
       case 'D':
           printf("Inserisci il valore del primo numero: ");
           scanf("%d", &operando1);
           printf("Inserisci il valore del secondo numero: ");
           scanf("%d", &operando2);

           risultato = operando1 / operando2;

           printf("Il risultato dell'operazione selezionata è %d", risultato);
           break;

        defaulf:
           printf("La lettera appena digitata non equivale a nessuna operazione. Il programma verrà chiuso.");

           system ("pause");
           exit(EXIT_FAILURE);
           break;
   }

   printf("\n\n");
   system("pause");
   return 0;
}

3 Risposte

  • Ciao.

    Hai erroneamente scritto “defaulf” invece di “default” ;)

    P.S. ti consiglio di aggiungere anche un \n  dopo “verrà chiuso.” così: “verrà chiuso.\n” per andare capo (è più leggibile).

  • Buongiorno, piccolo consiglio.

    Quando chiedi di inserire l'operando due nella divisione accertati che sia diverso da 0.

    Per il resto ti ha giá detto Euscar.

  • Ringrazioe entrambi per avermi risposto ed avermi chiaramente aiutato. Buona Pasqua a voi :-)   Piero

Devi accedere o registrarti per scrivere nel forum
3 risposte