Глава 2
// Подсчет числа буквенных оценок iinclude <iostream.h>
main(} {
int grade;
int aCount .= 0, bCount = 0, cCount = 0, dCount = 0, fCount = 0;
cout « "Введите буквенную оценку." « endl
« "Введите символ EOF по окончании ввода." « endl;
while ( ( grade = cin.get() ) != EOF ) (
case
case 'A'
++aCount; break;
case
case 'B': case ++bCount; break;
case 'C'
case
++cCount; break;
case
case
++dCount; break;
case
++fCount; break;
case '\n': case ' ' break;
// switch, вложенный в while
// Grade равна А в верхнем регистре
// или а в нижнем регистре.
// Grade равна В в верхнем регистре
// или b в нижнем регистре.
// Grade равна С в верхнем регистре
// или с в нижнем регистре.
// Grade равна D в верхнем регистре
// или d в нижнем регистре.
// Grade равна F в верхнем регистре
// или f в нижнем регистре.
// этот ввод игнорируется
default: cout
break;
}
// при любых других символах « "Введена неправильная буквенная оценка." « " Введите новую оценку." « endl;
cout « endl « "Количество различных оценок:"
« endl « "А: " « aCount « endl « "В: " « bCount « endl « "С: " « cCount « endl « "D: " « dCount « endl « "F: " « fCount « endl;
return 0;
Рис 2.22. Пример использования switch (часть 1 из 2)
Управляющие структуры 129
Введите буквенную оценку.
Введите символ EOF по окончании ввода.
А
В
С
С
А
D
F
С
E
Введена неправильная буквенная оценка. Введите новую оценку.
D
А
В
Количество различных оценок:
А: 3
В: 2
С: 3
D: 2
F: 1
Рис. 2.22. Пример использования switch (часть 2 из 2)
Оператор присваивания в ряде случаев можно рассматривать как единое целое, как некое выражение, значение которого равно значению, присвоенному переменной слева от символа =. Таким образом, значение присваивания grade = cin.get() равно значению, возвращенному функцией cin.get() и присвоенному переменной grade.
Тот факт, что операторы присваивания имеют значение, можно использовать для задания одного и того же начального значения сразу нескольким переменных. Например, в операторе
а = b = с = 0;
сначала выполняется присваивание с = 0 (так как операция присваивания = имеет ассоциативность справа налево). Затем переменной b присваивается значение присваивания с = 0 (которое равно 0). Затем переменной а присваивается значение присваивания b = (с = 0) (которое тоже равно 0). В нашей программе значение присваивания grade = cin.get() сравнивается со значением EOF — символа, который установлен для «конца файла». Мы используем EOF (который обычно имеет значение -1) как значение метки. Пользователь нажимает зависящую от системы комбинацию клавиш, означающую «конец файла», т.е. как бы говорит: «У меня нет больше данных для ввода». EOF — символическая целая константа, определенная в головном файле <iostream.h>. Если значение, присвоенное переменной grade, равно EOF, то программа заканчивается. В данной программе мы выбрали для символа представление int, так как EOF — целая величина (повторим, что обычно она равна -1).
Замечание по мобильности 2.1
Комбинация клавиш для ввода признака конца файла зависит от системы.
- 116 Глава 2
- 2.13. Основы повторения, управляемого счетчиком
- 2.14. Структура повторения for (цикл)
- 120 Глава 2
- 122 Глава 2
- 2.15. Пример использования структуры for
- 124 Глава 2
- 126 Глава 2
- 2.16. Структура множественного выбора switch
- Глава 2
- 130 Глава 2
- 132 Глава 2
- 2.17. Структура повторения do/while
- 134 Глава 2
- 2.18. Операторы break и continue
- Глава 2
- 2.19. Логические операции
- 138 Глава 2
- Глава 2
- 2.21. Заключение по структурному программированию
- IfcrpyKTypa (единственный выбор)
- Глава 2
- Глава 2
- 148 Глава 2
- Глава 2
- Глава 2
- Глава 2
- 156 Глава 2
- 158 Глава 2
- 160 Глава 2
- 2.1. А) следование, выбор и повторение, b) if/else. С) управляемым счет чиком или определенным заранее, d) Метку, сигнал, флаг или лож ный сигнал.
- 162 Глава 2
- 164 Глава 2
- 166 Глава 2
- 168 Глава 2
- 170 Глава 2
- 172 Глава 2
- 174 Глава 2
- 176 Глава 2
- 178 Глава 3
- Глава 3
- 3.3. Математические библиотечные функции
- 3.4. Функции
- Глава 3
- 3.5 Определения функций
- 184 Глава 3
- 186 ГлаваЗ
- 3.6. Прототипы функций
- 188 Глава 3
- 3.7. Заголовочные файлы
- 3.8. Генерация случайных чисел
- Глава 3
- 192 Глава 3
- 194 Глава 3
- 3.9. Пример: азартная игра
- Глава 3
- 198 Глава 3
- 3.10. Классы памяти
- 200 Глава 3
- 3.11. Правила, определяющие область действия
- 202 Глава 3
- 204 Глава 3
- 3.12 Рекурсия
- Глава 3
- 6) Значения, возвращаемые после каждого рекурсивного вызова
- 3.13. Пример использования рекурсии: последовательность чисел Фибоначчи
- Глава 3
- 3.14. Рекурсии или итерации
- 212 Глава 3
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- 3.15. Функции с пустыми списками параметров
- 214 Глава 3
- 3.16. Встраиваемые функции