Вход/Регистрация
Программирование. Принципы и практика использования C++ Исправленное издание
вернуться

Страуструп Бьерн

Шрифт:

Мы должны всегда проверять входные данные программы, поскольку — вольно или невольно — кто-нибудь когда-нибудь введет неверные данные. Программа должна работать разумно, даже если пользователь так не поступает.

Приведем улучшенную версию программы.

// преобразование дюймов в сантиметры и наоборот

// суффикс '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-if
", но такой инструкции в языке С++ нет. Вместо этого мы использовали комбинацию двух инструкций
if
. Общий вид инструкции
if
выглядит так:

if (выражение) инструкция else инструкция

Иначе говоря, за ключевым словом

if
следует выражение в скобках, а за ним — инструкция, ключевое слово
else
и следующая инструкция. Вот как можно использовать инструкцию
if
в части
else
инструкции
if
:

if (выражение) инструкция else if (выражение) инструкция else инструкция

В нашей программе этот примем использован так:

if (unit == 'i')

... // 1-я альтернатива

else if (unit == 'c')

... // 2-я альтернатива

else

... // 3-я альтернатива

Таким образом, мы можем записать сколь угодно сложную проверку и связать инструкцию с отдельной альтернативой. Однако следует помнить, что программа должна быть простой, а не сложной. Не стоит демонстрировать свою изобретательность, создавая слишком сложные программы. Лучше докажите свою компетентность, написав самую простую программу, решающую поставленную задачу.

ПОПРОБУЙТЕ

Используя приведенный выше пример, напишите программу для перевода йен, евро и фунтов стерлингов в доллары. Если вы любите реальные данные, уточните обменные курсы в веб.

4.4.1.2. Инструкции switch

Сравнение единиц измерения с символами

'i'
и
'c'
представляет собой наиболее распространенную форму выбора: выбор, основанный на сравнении значения с несколькими константами. Такой выбор настолько часто встречается на практике, что в языке C++ для него предусмотрена отдельная инструкция:
switch
. Перепишем наш пример в ином виде

int main

{

const double cm_per_inch = 2.54; // количество сантиметров

// в дюйме

double length = 1; // длина в дюймах или сантиметрах

char unit = 'a';

cout<< "Пожалуйста, введите длину и единицу измерения
(c или i):\n";

cin >> length >> unit;

switch (unit) {

case 'i':

cout << length << " in == " << cm_per_inch*length << " cm\n";

break;

case 'c':

cout << length << " cm == " << length/cm_per_inch << " in\n";

break;

default:

cout << "Извините, я не знаю, что такое '" << unit << "'\n";

break;

  • Читать дальше
  • 1
  • ...
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: