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

di il
3 risposte

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

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

  • Re: Switch ...case...il default non lo esegue!

    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).

  • Re: Switch ...case...il default non lo esegue!

    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.

  • Re: Switch ...case...il default non lo esegue!

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

Devi accedere o registrarti per scrivere nel forum
3 risposte