Программирование. Принципы и практика использования C++ Исправленное издание, стр. 48
// преобразование дюймов в сантиметры и наоборот// суффикс 'i' или 'c' означает единицу измерения на входеint main(){ const double cm_per_inch = 2.54; // количество сантиметров // в дюйме double length = 1; // длина в дюймах или // сантиметрах char unit = 0; cout<< "Пожалуйста, введите длину и единицу измерения (c или i):\n"; cin >> length >> unit; if (unit == 'i') cout << length << "in == " << cm_per_inch*length << "cm\n"; else cout << length << "cm == " << length/cm_per_inch << "in\n";}На самом деле эта программа работает примерно так, как предусмотрено: введите
1i1in==2.54cm2.54c2.54cm==1inПроблема заключается в том, что вы не можете предотвратить ввод неверной информации. Программа предполагает, что пользователь всегда вводит правильные данные. Условие
unit=='i''i''c'Что произойдет, если пользователь введет
15funit=='i'else'f'
Приведем улучшенную версию программы.
// преобразование дюймов в сантиметры и наоборот// суффикс 'i' или 'c' означает единицу измерения на входе// любой другой суффикс считается ошибкойint main(){ const double cm_per_inch = 2.54; // количество сантиметров // в дюйме double length = 1; // длина в дюймах или сантиметрах char unit = ' '; // пробел - не единица измерения cout<< "Пожалуйста, введите длину и единицу измерения (c или i):\n"; cin >> length >> unit; if (unit == 'i') cout << length << "in == " << cm_per_inch*length << "cm\n"; else if (unit == 'c') cout << length << "cm == " << length/cm_per_inch << "in\n"; else cout << "Извините, я не знаю, что такое '" << unit << "'\n";}Сначала мы проверяем условие
unit=='i'unit=='c'Извините, ...else-ifififif (выражение) инструкция else инструкцияИначе говоря, за ключевым словом
ifelseifelseifif (выражение) инструкция else if (выражение) инструкция else инструкцияВ нашей программе этот примем использован так:
if (unit == 'i') ... // 1-я альтернативаelse if (unit == 'c') ... // 2-я альтернативаelse ... // 3-я альтернатива
ПОПРОБУЙТЕ
Используя приведенный выше пример, напишите программу для перевода йен, евро и фунтов стерлингов в доллары. Если вы любите реальные данные, уточните обменные курсы в веб.
4.4.1.2. Инструкции switch
Сравнение единиц измерения с символами
'i''c'switch