Problema variabile nel costrutto Switch

di il
4 risposte

Problema variabile nel costrutto Switch

Ho creato un nuovo thread e spero che anche il titolo vada meglio

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.

4 Risposte

  • Re: Problema variabile nel costrutto Switch

    Se usi un char allora devi inserire un solo char. Se prevedi che l'input possa essere diverso, allora untilizza un int e la %d nella scanf. A questo punto nella switch elimina gli apici nei case ' ' e funzionerà.
  • Re: Problema variabile nel costrutto Switch

    Quindi il problema erano solo gli apici Grazie mille.
  • Re: Problema variabile nel costrutto Switch

    No ... non erano solo gli apici ... non hai capito ...
  • Re: Problema variabile nel costrutto Switch

    Sì, intendevo che quando inizialmente mettevo una variabile intera il programma non funzionava correttamente perchè lasciavo gli apici come con le variabili char, mentre mi bastava toglierli per non ottenere errori.
Devi accedere o registrarti per scrivere nel forum
4 risposte