Упражнение 5.14
. Напишите программу для чтения строк со стандартного устройства ввода и поиска совпадающих слов. Программа должна находить во вводе места, где одно слово непосредственно сопровождается таким же. Отследите наибольшее количество повторений и повторяемое слово. Отобразите максимальное количество дубликатов или сообщение, что никаких повторений не было. Например, при вводеhow now now now brown cow cow
вывод должен указать, что слово now
встретилось три раза.for
for
имеет следующий синтаксис:for (
Слово for
for
(for
header).for (
Как правило,
условие
. Пока условие
истинно, оператор
выполняется. Если при первой проверке условие
оказывается ложным, оператор не выполняется ни разу. Для изменения значения переменной, инициализированной в инициализирующем операторе и проверяемой в условии, используется выражение
. Оно выполняется после каждой итерации цикла. Как и в других случаях, оператор
может быть одиночным оператором или блоком операторов.for
Рассмотрим следующий цикл for
//
//
for (decltype(s.size()) index = 0;
index != s.size () && !isspace(s[index]); ++index)
s[index] = toupper(s[index]); //
Порядок его выполнения таков.
1. В начале цикла только однажды выполняется
index
и инициализируется нулем.2. Затем обрабатывается
index
не равен s.size()
и символ в элементе s[index]
не является пробелом, то выполняется тело цикла for
. В противном случае цикл заканчивается. Если условие ложно уже на первой итерации, то тело цикла for
не выполняется вообще.3. Если условие истинно, то тело цикла for
s[index]
в верхний регистр.4. И наконец, обрабатывается
index
увеличивается 1.Эти четыре этапа представляют первую итерацию цикла for
s
или пока index
не превысит s.size()
.for
for
. Таким образом, в данном примере переменная index
недоступна после завершения цикла for
.for
Подобно любому другому объявлению,
инициализирующий-оператор
может быть оператором объявления. Поэтому у всех переменных должен быть тот же базовый тип (см. раздел 2.3). Для примера напишем цикл, дублирующий элементы вектора в конец следующим образом://
//
for (decltype(v.size()) i = 0, sz = v.size(); i != sz; ++i)
v.push_back(v[i]);
В этом цикле
i
и управляющая переменная цикла sz
.for
В заголовке for
инициализирующий-оператор
, условие
или выражение
.Когда инициализация не нужна, вместо инициализирующего оператора можно использовать пустой оператор. Например, можно переписать цикл, который искал первое отрицательное число в векторе так, чтобы использовался цикл for
auto beg = v.begin();
for ( /*
; //