Язык программирования C++. Пятое издание - [11]
> else { // в противном случае вывести счет для
> // предыдущего значения
> std::cout << currVal << " occurs "
> << ent << " times" << std::endl;
> currVal = val; // запомнить новое значение
> cnt = 1; // сбросить счетчик
> }
> } // цикл while заканчивается здесь
> // не забыть вывести счет для последнего значения
> std::cout << currVal << " occurs "
> << cnt << " times" << std::endl;
> } // первый оператор if заканчивается здесь
> 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) {
> // ...
>} // первый оператор if заканчивается здесь
Подобно оператору >while
, оператор >if
проверяет условие. Условие в первом операторе >if
читает значение в переменную >currVal
. Если чтение успешно, то условие истинно и выполняется блок кода, начинающийся с открытой фигурной скобки после условия. Этот блок завершается закрывающей фигурной скобкой непосредственно перед оператором >return
.
Как только подсчитываемое стало известно, определяется переменная >cnt
, содержащая счет совпадений данного числа. Для многократного чтения чисел со стандартного устройства ввода используется цикл >while
, подобный приведенному в предыдущем разделе.
Телом цикла >while
является блок, содержащий второй оператор >if
:
>if (val == currVal) // если значение то же
> ++cnt; // добавить 1 к cnt
>else { // в противном случае вывести счет для
> // предыдущего значения
> std::cout << currVal << " occurs "
> << cnt << " times" << std::endl;
> currVal = val; // запомнить новое значение
> cnt = 1; // сбросить счетчик
>}
Условие в этом операторе >if
использует для проверки равенства значений переменных >val
и >currVal
оператор равенства (equality operator) (оператор >==
). Если условие истинно, выполняется оператор, следующий непосредственно за условием. Этот оператор осуществляет инкремент значения переменной >cnt
, означая очередное повторение значения переменной >currVal
.
Если условие ложно (т.е. значения переменных >val
и >currVal
не равны), выполняется оператор после ключевого слова >else
. Этот оператор также является блоком, состоящим из оператора вывода и двух присвоений. Оператор вывода отображает счет для значения, которое мы только что закончили обрабатывать. Операторы присвоения возвращают переменной >cnt
значение >1
, а переменной >currVal
— значение переменной >val
, которое ныне является новым подсчитываемым числом.
>=
, а для про верки равенства — оператор >==
. В условии могут присутствовать оба оператора. Довольно распространена ошибка, когда в условии пишут >=
, а подразумевают >==
.Упражнение 1.17. Что произойдет, если в рассматриваемой здесь программе все введенные значения будут равны? Что если никаких совпадающих значений нет?
Упражнение 1.18. Откомпилируйте и запустите на выполнение программу этого раздела, а затем вводите только равные значения. Запустите ее снова и вводите только не повторяющиеся числа. Совпадает ли ваше предположение с реальностью?
Упражнение 1.19. Пересмотрите свою программу, написанную для упражнения раздела 1.4.1, которая выводила бы диапазон чисел, обрабатывая ввод, так, чтобы первым отображалось меньше число из двух введенных.
Оформление исходного кода программ на языке С++ не имеет жестких правил, поэтому расположение фигурных скобок, отступ, выравнивание, комментарии и разрыв строк, как правило, никак не влияет на полученную в результате компиляции программу. Например, фигурная скобка, обозначающая начало тела функции >main()
, может находиться в одной строке со словом >main
(как в этой книге), в начале следующей строки или где-нибудь дальше. Единственное требование — чтобы открывающая фигурная скобка была первым печатным символом, за исключением комментария, после списка параметров функции >main()
.
Хотя исходный код вполне можно оформлять по своему усмотрению, необходимо все же позаботиться о его удобочитаемости. Можно, например, написать всю функцию >main()
в одной длинной строке. Такая форма записи вполне допустима, но читать подобный код будет крайне неудобно.
До сих пор не стихают бесконечные дебаты по поводу наилучшего способа оформления кода программ на языках С++ и С. Авторы убеждены, что единственно правильного стиля не существует, но единообразие все же важно. Большинство программистов выравнивают элементы своих программ так же, как мы в функции >main()
и телах наших циклов. Однако в коде этой книги принято размещать фигурные скобки, которые разграничивают функции, в собственных строках, а выравнивание составных операторов ввода и вывода осуществлять так, чтобы совпадал отступ операндов. Другие соглашения будут описаны по мере усложнения программ.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.