Problema Codice C?!

di il
3 risposte

Problema Codice C?!

Salve a tutti, sono nuovo in questo forum.
Ora vi posto del codice sorgente che ho creato per un esercizio con il switch-case ed i relativi messaggi di errore.

Mi spiegate cos'è che non va??

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

int main (){
	double a, b;
	char op ;
	double somma, differenza, quoziente, prodotto;
    printf("Inserisci il primo numero: ");
    scanf("%lf", &a);
    
    printf("Inserisci l'operatore: ");
    scanf("%c", &op);
    
    printf ("Inserisci il secondo numero: ");
    scanf("%lf", &b);
    
    switch(op)
    {
    	case '+':
    		double somma = a+b;
    		printf ("%lf",somma);
			break;
    	case '-':
    		double differenza = a-b;
    		printf ("%lf", differenza);
    		break;
    	case '/':
		    double quoziente = a/b;
			printf ("%lf", quoziente);
			break;
		case '*':
		    double prodotto = a*b;
			printf ("%lf", prodotto);
			break;
		default :
			printf("Undefined...");		
    	
	}
    
    return 0;
}
Messaggi:
20 7 [Error] a label can only be part of a statement and a declaration is not a statement
24 7 [Error] a label can only be part of a statement and a declaration is not a statement
28 7 [Error] a label can only be part of a statement and a declaration is not a statement
32 7 [Error] a label can only be part of a statement and a declaration is not a statement

PS Utilizzo DEV-C++ come IDE

3 Risposte

  • Re: Problema Codice C?!

    Ci sono diversi errori.

    L'errore segnalato dal compilatore , deriva dalla specifica di conversione per la funzione "printf" quando tenti di stampare un valore double . La specifica che hai utilizzato si applica alla funzione scanf , quindi per ovviare il problema , quando utilizzi la funzione printf e vuoi stampare un valore double , devi utilizzare %f , lo stesso valore che utilizzi per i tipi di dato float . Quando invece utilizzi la funzione scanf , puoi utilizzare la specifica %lf .
    Inoltre ci sono altri due problemi , il modo in cui hai usato il costrutto switch-case è sbagliato , qualsiasi operatore tu inserisca , la valutazione ricadrà sempre in "indefinito" , mentre per quanto riguarda la dichiarazione "inizializzazione" delle variabili , è sempre buona cosa farlo una volta , omettendo il tipo di dato nel caso si voglia operare su di essa .

    Alcune specifiche le trovi in tabella.
    specs.png
    specs.png

  • Re: Problema Codice C?!

    Il codice corretto dovrebbe essere:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main ()
    {
        double a, b;
        char op ;
        double somma, differenza, quoziente, prodotto;
        printf("Inserisci il primo numero: ");
        scanf("%lf", &a);
        getchar();
        printf("Inserisci l'operatore: ");
        scanf("%c", &op);
    
        printf ("Inserisci il secondo numero: ");
        scanf("%lf", &b);
    
        switch(op)
        {
           case '+':
                somma = a+b;
                printf ("%f",somma);
                break;
           case '-':
                differenza = a-b;
                printf ("%f", differenza);
                break;
           case '/':
                quoziente = a/b;
                printf ("%f", quoziente);
                break;
          case '*':
                prodotto = a*b;
                printf ("%f", prodotto);
                break;
          default :
                printf("Undefined...");
    
        }
    
        return 0;
    }
    
  • Re: Problema Codice C?!

    Grazie mille ragazzi siete fantastici!!
Devi accedere o registrarti per scrivere nel forum
3 risposte