Задача на повторяющиеся слова в С++
Всем привет. Только начал изучать С++ и столкнулся с задачей на повторяющиеся слова, код взят из книги Страуструпа по С++. Не понимаю как данный алгоритм сравнивает предыдущее слово с текущим (вроде же переменная previous это просто пустой пробел, но она как-то принимает значение прошлого слова в себя??). В общем, может кто-нибудь понимает, как работает данный цикл. Буду благодарен.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string previous = " ";
string current;
while (cin >> current) {
if (previous == current)
cout << "Repeating word : " << current << endl;
previous = current;
}
}
Ответы (1 шт):
previous для начала содержит пробел, в общем, она может ничего в себе не содержать. Но пробел там, чтобы нужно было сравнивать в условии. А так как при первой итерации
while (cin >> current)
ты получишь первое слово, оно сравнивается с
if (previous == current)
previous – есть пробел, в current – будет слово, и конечно условие будет false. Поэтому дальше будет выполняться
previous = current;
При следующей итерации, ты снова получаешь возможность ввести слово, и уже на этом этапе происходит сравнение предыдущего слова с текущим.
while (cin >> current) {
if (previous == current)
И если ты вел тоже самое слово, что и в прошлый раз, условие будет true - и мы получим на консоль -
cout << "Repeating word : " << current << endl;