Проверка чисел с плавающей точкой и строк

Мы уже говорили, что в ветви case значение условия должно быть целым числом или символом. Поэтому нельзя написать инструкцию типа case 12.87: или case "Adam". Что касается значений типа float, то если вы хотите проверить такое значение, оно должно быть каким-то образом преобразовано в формат целого числа или символа.

В большинстве случаев для преобразования формата можно использовать конструкцию if...else. В Листинге8 приведен текст программы, в которой конструкция if...else присваивает целочисленное значение переменной level, основываясь на значении типа float, присвоенном переменной income.

Листинг 8. Использование вложенных инструкций if для преобразования чисел с плавающей точкой.

/*switch.c*/main() { float income; charlevel; printf("Введите сумму Вашего годового дохода: "); scanf("%f", &income); if(income<= 20000.00) level = '1'; else if(income<= 60000.00) level = '2'; else if(income<= 120000.00) level = '3'; else level = '4'; switch(level) { case '1': puts("Ставканалога = 15%"); break; case '2': puts("Ставканалога = 28%"); break; case '3': puts("Ставка налога = 32%"); break; case '4': puts("Ставканалога = 36%"); break; default: puts("Вы неправильно ввели сумму дохода"); } }

На первый взгляд, кажется неразумным использовать несколько конструкций if...else и переключатель switch, в то время как можно было поместить все инструкции в if...else. Действительно, в простых программах, таких, как эта, можно без труда так и поступить, но когда инструкции, выполняемые в каждом случае, становятся более сложными, имеющими собственные вложенные инструкции if, использование переключателя switch является, несомненно, более удобным. Задание ветвей case позволит легко определить, сколько именно условий следует проверить и какие именно действия должны быть выполнены в каждом случае. Оформление процедуры присваивания значения с помощью серии последовательных конструкций if...else стоит той дополнительной работы, которую придется ради него проделать.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: