Упражнение 1.16. Напишите собственную версию программы, которая выводит сумму набора целых чисел, прочитанных при помощи объекта cin.
1.4.4. Оператор if
Подобно большинству языков, С++ предоставляет if, который обеспечивает выполнение операторов по условию. Оператор if можно использовать для написания программы подсчета количества последовательных совпадений значений во вводе:
#include
int main() {
//
int currVal = 0, val = 0;
//
//
if (std::cin >> currVal) {
int cnt = 1; //
while (std::cin >> val) { //
if (val == currVal) //
++cnt; //
else { //
//
std::cout << currVal << " occurs "
<< ent << " times" << std::endl;
currVal = val; //
cnt = 1; //
}
} //
//
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
} //
return 0;
}
Если задать этой программе следующий ввод:
42 42 42 42 42 55 55 62 100 100 100
то результат будет таким:
42 occurs 5 times
55 occurs 2 times
62 occurs 1 times
100 occurs 3 times
Большая часть кода в этой программе должна быть уже знакома по прежним программам. Сначала определяются переменные val и currVal: currVal будет содержать подсчитываемое число, а переменная val — каждое число, читаемое из ввода. Новыми являются два оператора if. Первый гарантирует, что ввод не пуст.
if (std::cin >> currVal) {
// ...
} //
Подобно оператору while, оператор if проверяет условие. Условие в первом операторе if читает значение в переменную currVal. Если чтение успешно, то условие истинно и выполняется блок кода, начинающийся с открытой фигурной скобки после условия. Этот блок завершается закрывающей фигурной скобкой непосредственно перед оператором return.
Как только подсчитываемое стало известно, определяется переменная cnt, содержащая счет совпадений данного числа. Для многократного чтения чисел со стандартного устройства ввода используется цикл while, подобный приведенному в предыдущем разделе.
Телом цикла while является блок, содержащий второй оператор if:
if (val == currVal) //
++cnt; //
else { //
//
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
currVal = val; //
cnt = 1; //
}
Условие в этом операторе if использует для проверки равенства значений переменных val и currVal ==). Если условие истинно, выполняется оператор, следующий непосредственно за условием. Этот оператор осуществляет инкремент значения переменной cnt, означая очередное повторение значения переменной currVal.