Оператор 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;
}
}