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.