Problema esecuzione programma C

di il
4 risposte

Problema esecuzione programma C

Buonasera, sono una studentessa universitaria al primo anno di Informatica e mi servirebbe aiuto per risolvere un problema in un semplice programma C datomi come esercizio.

Questo è l'esercizio che devo svolgere:
Scrivere un programma che prenda in input due valori e un operatore.
Se l'operatore e' + allora calcola e visualizza la somma dei valori.
Se l'operatore e' - allora calcola e visualizza la differenza dei valori.
Se l'operatore e' * allora calcola e visualizza il prodotto dei valori.
Se l'operatore e' / allora calcola e visualizza la divisione del primo valore per il secondo.
Se l'operatore e' diverso dai precedenti, allora visualizza il messaggio "operatore sconosciuto".

Questo è il programma che ho scritto:

#include<stdio.h>
void main()
{
	int a, b; 
	char op;
	
	printf("Inserire primo valore:\n");
	scanf("%d",&a);
	printf("Inserire secondo valore:\n");
	scanf("%d",&b);
	printf("Inserire operatore:\n");
	scanf("%c",&op);
	
	switch(op)
	{
		case'+':printf("%d", a+b);
		break;
		case'-':printf("%d", a-b);
		break;
		case'*':printf("%d", a*b);
		break;
		case'/':printf("%d", a/b);
		default:printf("Operatore inesistente\n");
	}
}
Durante la compilazione del programma non mi vengono segnalati nè warnings nè errori di sintassi, ma al momento dell'esecuzione, quando devo inserire l'operatore, il programma non mi permette di digitarlo e stampa direttamente "Operatore inesistente".



Qualcuno saprebbe darmi una mano?

4 Risposte

  • Re: Problema esecuzione programma C

    Ciao Giulia, per evitare che l'invio dell'ultimo numero sia letto come operatore dalla scanf, modificala così

    scanf("\n%c",&op);
  • Re: Problema esecuzione programma C

    Problema risolto! Grazie mille!
  • Re: Problema esecuzione programma C

    Salve di nuovo! Ho riscontrato altre difficoltà riguardo a dei programmi in C (non sapevo se continuare a utilizzare questa discussione o aprirne una nuova).

    Il programma è simile a quello precedente:
    Scrivere un programma che prenda in input il valore di una casa e il codice della zona in cui si trova (1, 2, 3 o 4).
    Il programma deve calcolare la tassa di proprieta' come percentuale del valore della casa.
    In zona 1, la percentuale e' 5%.
    In zona 2, la percentuale e' 10%.
    In zona 3, la percentuale e' 15%.
    In zona 4, la percentuale e' 20%.
    Il programma deve visualizzare l'importo della tassa se la zona varia tra 1 e 4, altrimenti un messaggio di errore.

    Questo è il programma che ho scritto:
    #include<stdio.h>
    void main ()
    {
    	float v, t;
    	char z;
    
    	printf("Inserire valore della casa:\n");
    	scanf("%f",&v);
    	printf("Inserire numero zona:\n");
    	scanf("\n%c",&z);
    	
    	switch(z)
    	{
    		case'1':t=(v*5)/100;
    			  printf("La tassa e' di %f", t);
    		break;
    		case'2':t=(v*10)/100;
    			  printf("La tassa e' di %f", t);
    		break;
    		case'3':t=(v*15)/100;
    			  printf("La tassa e' di %f", t);
    		break;
    		case'4':t=(v*20)/100;
    			  printf("La tassa e' di %f", t);
    		break;
    		default:printf("Errore: zona sconosciuta.\n");
    	}
    }
    
    Il codice funziona, se non per il fatto che quando inserisco la zona, se scrivo per esempio 12 (zona non accettabile) mi viene calcolata la tassa nella zona 1; se scrivo 22 viene calcolata nella zona 2 e così via. Se invece inserisco nel mezzo un numero dal 5 in poi ricevo giustamente un errore (per esempio 15 o 25). C'è un modo per evitare ciò? Ho provato ad utilizzare una variabile intera invece che char ma il programma una volta inserita la zona salta direttamente all'errore.
  • Re: Problema esecuzione programma C

    Non si utilizza lo stesso thread ... e si danno titoli più adeguati ...
Devi accedere o registrarti per scrivere nel forum
4 risposte