вторник, 25 апреля 2017 г.

Оператор выбора switch

Материалы

Оператор выбора switch позволяет выбирать между несколькими разделами кода в зависимости от значения целочисленного выражения.
Синтаксис оператора:
switch ( целочисленное_выражение )  
  case значение1 : оператор1
  case значение2 : оператор2
  ...
  default  : инструкция

Нужно иметь в виду следующее:
  • Выражение должно быть обязательно целого типа.
  • Тело оператора switch состоит из ряда меток case и необязательной метки default.
  • Никакие два константных выражения в операторах case не могут иметь одно и то же значение.
  • Метка default может появляться только один раз.
  • Оператор по умолчанию (default) не всегда стоит в конце; он может отображаться в любой части оператора switch.
  • Метка case или default может отображаться только внутри оператора switch.
  • Значение в каждой метке case сравнивается с исходным выражением на равенство.
  • Управление передается оператору, у которого значение у метки case соответствует значению выражения.
  • Для выхода из тела операторы switch используется оператор break, который следует размещать в конце каждого набора инструкций.
  • Можно ставить две метки на один оператор.
  • Не забываем, что символьный тип char также может быть приведен к целому типу, то есть проверять на равенство можно не только числовые выражения, но и символы.

Пример 1

Задание: вывести название дня недели по его номеру.
Пример входных данных
Результат работы программ
5
Пятница

#include <iostream>
using namespace std;

int main() {
   setlocale(LC_ALL, "Russian");
   int n = 0;
   cin >> n;
   switch (n)
   {
       case 1: cout << "Понедельник\n"; break;
       case 2: cout << "Вторник\n";  break;
       case 3: cout << "Среда\n"; break;
       case 4: cout << "Четверг\n"; break;
       case 5: cout << "Пятница\n"; break;
       case 6: cout << "Суббота\n"; break;
       case 7: cout <<"Воскресенье\n"; break;
       default: cout <<"Номер должен быть от 1 до 7.\n"; break;    
   }
   return 0;
}

Пример 2

Задание: вводят два числа и знак арифметической операции между ними. Каждое число и знак операции вводят через пробел. Произвести требуемое вычисление и вывести ответ.
Пример входных данных
Результат работы программ
12 + 45
12+45=57

#include <iostream>
using namespace std;
int main() {
   double a,b;
   char oper; // переменная символьного типа, которая будет хранить знак операции
   cin >> a >> oper >> b;
   switch (oper) //сопоставляем знак операции с
   {
       case '+': { cout << a << oper << b << "=" << a+b; }
                 break;
       case '-': { cout << a << oper << b << "=" << a-b; }
                 break;
       case '*': { cout << a << oper << b << "=" << a*b; }
                 break;
       case '/': { cout << a << oper << b << "=" << a/b; }
                 break;
       default:  { cout << "Error! Incorrect input!\n";}
                 break;
   }
}

Пример 3

Задание: для введенного номера месяца, вывести сколько в нем дней.
Пример входных данных
Результат работы программ
4
примечание: в апреле (месяц №4) 30 дней
30 дней

#include <iostream>
using namespace std;

int main() {
   setlocale(LC_ALL, "Russian");
   int month;
   cin >> month;
   switch (month)
   {
       case 1: //перечисляем сразу все значения, соответствующие реакции "31 день"
       case 3:
       case 5:
       case 7:
       case 8:
       case 10:
       case 12:
           cout << "31 день.\n";
           break;
       case 4:
       case 6:
       case 9:
       case 11:
           cout << "30 дней.\n";
           break;
       case 2:
           cout << "28 или 29 дней.\n";
           break;
       default:
           cout << "Такого месяца нет.\n";
           break;
   }
return 0;
}

Практическое задание

  1. Вывести название месяца по его номеру, введенному с клавиатуры.
  2. По введенному номеру месяца, вывести название времени года.

Комментариев нет:

Отправить комментарий