Страницы

3. Оператор выбора


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

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

Оператор switch имеет следующий формат:

switch  (целочисленное выражение)
{
     case метка1 : оператор1;
     case метка2 : оператор2;
     case метка3 : оператор3;
    ...
   default : операторN;
}

Возможно использование сокращенной формы оператора switch, в которой строка default отсутствует. В этом случае, если ни одно значение не совпадает со значением метки, управление передается оператору, следующему за switch.

Меткой может быть целым константным выражением. Чаще всего метки бывают константами типа char (символ) или int, или перечислителями.

Пример 1. 
Ввести номер дня недели, в зависимости от номера вывести название «Monday», «Tuesday» и т.д, если введен номер больше 7  или меньше 0 – вывести «mistake»


#include <iostream> 
using namespace std;

int main()
    {
    int n;
    cin >> n;
    switch  (n)
    {
     case 1 : cout << "Monday";      break;
     case 2 : cout << "Tuesday";      break;
     case 3 : cout << "Wednesday"; break;
     case 4 : cout << "Thursday";    break;
     case 5 : cout << "Friday";         break;
     case 6 : cout << "Saturday";     break;
     case 7 : cout << "Sunday";        break;
     default : cout << "mistake";
    }
    
    return 0;

Каждая метка оператора switch должна быть представлена одиночным значением.  Оператор break пишем, чтобы после выполнения команд той строки, в которой метка подходит условию, мы вышли из оператора switch.    

Оператор if else позволяет обрабатывать диапазоны.

if   (условие1)  оператор1;
  else if (условие2)  оператор2;
  else if (условие3)  оператор3;
  else оператор4;

Проверяются все условия по порядку, выполняется оператор, записанный  после истинного условия. Если все условия ложны, то выполнится оператор после последнего else.

Для вывода русского шрифта в консоли в программе после int main() {   набрать одну из этих строк:
     setlocale(0, "");
или
     setlocale(LC_ALL, "Russian");


Пример 2.
Дано число. Вывести какое оно: однозначное, двузначное, трехзначное или другое.

#include <iostream> 
using namespace std;

int main()
    {
    setlocale (0,  "");
   
    int n;
    cin >> n;
   
    if  (0  <=  n  && n  <= 9)
        cout << "однозначное";
    else if (10  <=  n  && n  <= 99)
        cout << "двузначное";
    else if (100  <=  n  && n  <= 999)
        cout << "трехзначное";
    else cout << "другое";    
    
    return 0;
    }

Посмотреть решение


Задание 1.

Написать программу, которая запрашивает количество стульев в виде числа от 1 до 10 и выводит количество в словесной форме.
1– стул
2, 3, 4 – стула
5, 6,…,10 – стульев

#include <iostream> 
using namespace std;

int main()
    {
    setlocale (0,  "");
   
    int n;
    cin >> n;

    if  ( n == 1)
        cout  << n << " стул";
    else if (2  <=  n  && n  <= 4)
        cout << n << " стула";
    else if (5  <=  n  && n  <= 10)
        cout << n << " стульев";
    else cout << "ошибка";    
    
    return 0;
    }

Посмотреть решение

Экспериментальный раздел

Задание 2.

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

1, 21, 101, 1001… – стул
2, 3, 4, 22, 102, 1003… – стула
5, 6,…,11-19, 20…- стульев

Тесты        Посмотреть решение

Задание 3.
Составить программу, которая по номеру месяца определяла время года.


Тесты        Посмотреть решение

#include <iostream> 
using namespace std;

int main()
    {
    int n;
    cin >> n;
    if (n <= 0 || n > 12)
      cout << "mistake";
    else if ( 3 <= n &&  n <= 5)
      cout  << "spring";
    else if ( 6 <= n &&  n <= 8)
      cout  << "summer";
    else if ( 9 <= n &&  n <= 11)
      cout  << "autumn";
     else cout << "winter"; 
         
    return 0;
    }

Задачи

1. С клавиатуры вводится цифра. Вывести ее буквенное представление.

2. Составьте программу, имитирующую своеобразный калькулятор, где 1-сумма двух чисел, 2-разность двух чисел, 3-произведение двух чисел, 4-целая часть от деления, 5-остаток от деления,6 — квадратный корень числа, иначе введен неизвестный номер операции.

3. В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года определить его название, если 1984 год — начало цикла: «год зеленой крысы».

Задания для самостоятельной работы


1. Составить программу, которая в зависимости от порядкового номера месяца выводит количество дней в этом месяце, если год не високосный.

2. С начала 2000 года по некоторый день прошло n месяцев и два дня. Определить название месяца этого дня.