RISOLTO problema con algoritmo in c

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

Lucio001

Nuovo Utente
Messaggi
16
Reazioni
3
Punteggio
22
C:
#include <stdio.h>
int main ()
{
    int l,b,t;
    char a,s,m,d;
    char operazione;
   
    printf("inserici l'operazione da svolgere: \n operazione  a = addizione, s = sottrazione, m = moltiplicazione, d = divisione:\n");
    scanf("%c", &operazione);
    printf("inserisci il primo valore:");
    scanf("%f", &l);
    printf("inserici il secondo valore:");
    scanf("%f", &b);
   
    switch (operazione)
    {
        case 1:
            (operazione == a);
            t= l + b;
            printf("il risultat della tua Addizione è: %f \n", t);
            break;
           
        case 2:
            (operazione == s);
            t= l - b;
            printf("il risultato della tua sottrazione è: %f \n", t);
            break;
           
        case 3:
            (operazione == m);
            t= l * b;
            printf("il risultato della tua moltiplicazione è: %f \n", t);
            break;
           
        case 4:
            (operazione == d);
            t= l/b;
            printf("il risultato della tua divisione è: %f \n", t);
            break;
           
        default:
        printf("La lettere inserita non corrisponde a nessuna operazione");  
       
    }
    return 0;  
   
}
Il problema è che ogni volta che lo faccio partire metto una lettera inserisco i due numeri e nello switch mi dice sempre che la lettere non corrisponde a nessuna operazione. Qualcuno può provare a farmi capire l'errore perchè io non ne trovo. grazie!!
 
Ultima modifica da un moderatore:
Stai usando un char per il tipo di operazione, quindi i vari case non potranno essere numerici.

Inoltre (operazione == m); non ha alcun significato messo lì così (puoi toglierli tutti).
 
La variabile ‘operazione’ è un char, quindi rappresenta il codice ascii della lettera che digiti. In C il codice ascii si scrive racchiudendo il simbolo in singolo apice, per esempio
C:
case 'a' :
 
La variabile ‘operazione’ è un char, quindi rappresenta il codice ascii della lettera che digiti. In C il codice ascii si scrive racchiudendo il simbolo in singolo apice, per esempio
C:
case 'a' :
Quindi sostituendo case 1 con case 'a' dovrebbe funzionare, oppure ci sono altre cose da cambiare
 
Quindi sostituendo case 1 con case 'a' dovrebbe funzionare, oppure ci sono altre cose da cambiare
Si, a occhio mi sembra possa andare già con quella sola modifica.

EDIT:
Solo una cosa @Lucio001, hai un altro errore: le tue variabili sono di tipo int, ma leggi e stampi a video un float.
Dovresti modificare lo specificatore di formato con %d, oppure utilizzare dei float.
 
Ultima modifica:
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top