Оператор switch позволяет организовать более удобный выбор из определенного количества значений по сравнению с оператором if.

Синтаксис:

switch (выражение) {
 case константное выражение : оператор
 [default: оператор]
}

Тело switch состоит из последовательности меток case и необязательной метки default (значение по умолчанию). Одинаковые значения меток case недопустимы.

Например, составим программу для подсчета гласных букв в тексте, введенном в консоли.

#include <iostream>
int main() {
 setlocale(LC_ALL, "Russian"); 
 int vowelCount = 0; //переменная для подсчета гласных букв
 char ch; //для чтения ввода
 while (std::cin >> ch) { //Пока вводим
 switch (ch) {
 case 'а': ++vowelCount; break; 
 case 'у': ++vowelCount; break; 
 case 'о': ++vowelCount; break; 
 case 'ы': ++vowelCount; break; 
 case 'и': ++vowelCount; break; 
 case 'э': ++vowelCount; break; 
 case 'я': ++vowelCount; break; 
 case 'ю': ++vowelCount; break; 
 case 'ё': ++vowelCount; break; 
 case 'е': ++vowelCount; break; 
 } 
 }
 std::cout << "Количество гласных букв: " << vowelCount << std::endl;
 return 0;
}

Для остановки ввода необходим оператор EOF (end of file). Для Windows это комбинация Ctrl+Z. В C++ Shell комбинация не работает. Лучше выполнять код в Dev C++ или Visual Studio.

После метки case необходим оператор break, иначе начнут выполняться операторы после следующей метки case.

Поскольку после каждой метки case выполняется одно и то же выражение, программу можно упростить

switch (ch) {
 case 'а': 
 case 'у': 
 case 'о': 
 case 'ы': 
 case 'и': 
 case 'э': 
 case 'я': 
 case 'ю': 
 case 'ё': 
 case 'е': ++vowelCount; break;
}

Оператор default выполняется, если нет ни одного совпадения в case. Например, можно добавить подсчет в программу остальных символов. Для этого надо ввести еще одну переменную и добавить метку default в switch.

int otherCount = 0;
while (std::cin >> ch) {
 switch (ch) {
 ...
 default: ++otherCount; break;
 }
} 


 Похожие публикации
2016-01-31 • Просмотров [ 202 ]