RISOLTO problema con algoritmo in c

Stato
Discussione chiusa ad ulteriori risposte.

Lucio001

Nuovo Utente
16
3
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:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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).
 
  • Mi piace
Reazioni: Lucio001

Andretti60

Utente Èlite
6,440
5,091
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' :
 
  • Mi piace
Reazioni: Lucio001

Lucio001

Nuovo Utente
16
3
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
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili