Читаем Программирование полностью

<p id="AutBody_Root030"><strong>3.5.1. Пример: выявление повторяющихся слов</strong></p>

Присваивание необходимо, когда нам требуется записать в объект новое значение. Если подумать, то станет совершенно ясно, что присваивание является особенно полезным, когда приходится повторять операции несколько раз. Присваивание необходимо, когда требуется повторить операцию с новым значением. Рассмотрим небольшую программу, выявляющую повторяющиеся слова в предложении. Такие программы являются частью большинства инструментов для проверки грамматики.

int main()

{

  string previous = " ";     // переменная previous;

                             // инициализована "не словом"

  string current;            // текущее слово

  while (cin>>current) {     // считываем поток слов

    if (previous == current) // проверяем, совпадает ли

                             // слово с предыдущим

    cout << " повторяющееся слово: " << current << '\n';

    previous = current;

  }

}

Эту программу нельзя назвать очень полезной, поскольку она не способна указать, в каком именно месте стоит повторяющееся слово, но этого для нас пока достаточно. Рассмотрим эту программу строка за строкой.

string current; // текущее слово

Это строковая переменная, в которую мы сразу же считываем текущее (т.е. только что прочитанное) слово с помощью оператора

while (cin>>current)

  Эта конструкция, называемая инструкцией while, интересна сама по себе, поэтому мы еще вернемся к ней в разделе 4.4.2.1. Ключевое слово while означает, что инструкция, стоящая следом за выражением cin>>current, будет повторяться до тех пор, пока выполняется операция cin>>current, а операция cin>>current будет выполняться до тех пор, пока в стандартном потоке ввода есть символы.

Напомним, что для типа string оператор считывает слова, отделенные друг от друга разделителями. Этот цикл завершается вводом символа конца ввода (как правило, называемым концом файла). В системе Windows этот символ вводится путем нажатия комбинации клавиш , а затем — клавиши . В системе Unix или Linux для этого используется комбинация клавиш .

Итак, мы должны считать текущее слово из потока ввода и сравнить его с предыдущим словом (уже хранящимся в памяти). Если они окажутся одинаковыми, мы сообщим об этом.

if (previous == current)  // проверяем, совпадает ли слово

                          // с предыдущим

  cout << " повторяющееся слово: " << current << '\n';

Теперь мы должны повторить описанную операцию. Для этого копируем значение переменной current в переменную previous.

previous = current;

Эта инструкция учитывает все возможные ситуации, кроме начальной. Что делать с первым словом, у которого нет предыдущего, с которым его следовало бы сравнивать? Эта проблема решается с помощью следующего определения переменной previous:

string previous = " "; // переменная previous; инициализована

                       // "не словом"

Строка состоит из одного символа (пробела, который вводится путем нажатия клавиши пробела). Оператор ввода >> пропускает разделители, поэтому мы не смогли бы считать этот символ из потока ввода. Следовательно, в ходе первой проверки while сравнение

if (previous == current)

покажет, что значения переменных не совпадают (что и требовалось).

  Для того чтобы понять программу, надо на время стать “компьютером”, т.е. умозрительно выполнять программу строка за строкой. Просто нарисуйте квадратики на бумаге, записывайте в них значения и изменяйте их так, как указано в программе.

ПОПРОБУЙТЕ

Выполните эту программу самостоятельно, записывая промежуточные результаты на лист бумаги. Для проверки используйте фразу “The cat cat jamped”. Даже опытные программисты используют этот прием для визуализации относительно неочевидных действий в небольших фрагментах кода.

ПОПРОБУЙТЕ

Запустите программу для выявления повторяющихся слов. Проверьте предложение “She she laughed He He because what he did did not look very very good good”. Сколько раз повторяются слова в этом предложении? Почему? Что значит слово в этой программе? А что значит повторяющееся слово? (Например, “She she” — это повтор или нет?).

<p id="AutBody_Root031"><strong>3.6. Составные операторы присваивания</strong></p>
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных