Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
53
Добавлен:
28.03.2015
Размер:
252.93 Кб
Скачать

Структура множественного выбора

Для случаев, когда требуется осуществить выбор одного значения из конечного набора вариантов, структуру ifудобнее заменить структурой множественного выбораswitch:

switch (выражение)

{ case значение1:

Операторы 1;

break;

case значение2:

операторы 2;

break;

default:

операторы 0;

}

В целом структура switchвыполняется так же, как и составная условная структураif. Выражение (после ключевого словаswitch) должно иметь целый или символьный тип. Значение этого выражения последовательно сравнивается со значениями в расположенных ниже списках. Если в одном из списков находится совпадающее значение, то выполняется соответствующий оператор.

Элементы списка перечисляются через запятую (если их несколько), ими могут быть константы и диапазоны значений того же типа, что тип выражения. В листинге 2.6 приведен простой пример использования оператора выбора, с помощью которого организуется вывод текстового названия месяца года в зависимости от числового обозначения месяца. Здесь в каждом списке структуры case используется только одно значение (списки формируются из одного элемента).

Листинг 2.6. Формирование названия месяца по номеру

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

void main()

{ int Z;

cout << " 'Введите номер месяца : ";

cin >> Z;

switch(Z)

{ case 3:

cout << "Март";

break;

case 4:

cout << "Апрель";

break;

case 5:

cout << "Май";

break;

default:

cout << "Не весенний месяц";

}

_getch();

}

Рассмотрим еще один пример на тему оператора выбора. Необходимо по введенному с клавиатуры номеру тарифа и количеству оплачиваемых месяцев выдать значение суммы для оплаты. Листинг 2.7 содержит текст программы, а на рис. 2.5 приведена блок-схема алгоритма.

Листинг 2.7. Анализ тарифа и вычисление суммы для оплаты

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

void main()

{ int M,N;

float Sum,Tar;

cout << "Ввести число оплачиваемых месяцев : ";

cin >> M;

cout << "Ввести номер тарифа : ";

cin >> N;

switch(N)

{ case 1:

Tar=12000;

break;

case 2:

Tar=10000;

break;

case 3:

Tar=9000;

break;

default:

Tar=0;}

if (Tar == 0)

cout << "Ошибка в указании номера тарифа";

else

{

Sum=Tar*M;

cout << "К оплате "<<Sum;

}

_getch();

}

Рис. 2.5. Блок-схема к программе листинга 2.7

В листинге 2.8 приведен более усложненный вариант предыдущей разработки: в случае, если указан первый тариф и оплачивается число месяцев не менее трех, то для человека предоставляется скидка в виде 5 % от суммы.

В программе скидка в 5 % реализуется с помощью умножения суммы, представленной к оплате, на 0.95.

Листинг 2.8. Вычисление суммы с учетом скидки

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

void main()

{ int M,N;

float Sum,Tar,Skidka;

cout << "Ввести число оплачиваемых месяцев : ";

cin >> M;

cout << "Ввести номер тарифа : ";

cin >> N;

Skidka=1;

switch(N)

{ case 1:

Tar=12000;

if (M>3)

Skidka=0.95;

break;

case 2:

Tar=10000;

break;

case 3:

Tar=9000;

break;

default:

Tar=0;

}

if (Tar == 0)

cout << "Ошибка в указании номера тарифа";

else

{

Sum=Tar*M*Skidka;

cout << "К оплате "<<Sum;

}

_getch();

}

Соседние файлы в папке файлы по информатике