Поиск и замена минимальных по длине слов

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Chiiif2
Сообщения: 4
Зарегистрирован: 17 май 2014, 13:26

Подскажите пожалуйста,как можно заменить минимальные слова в строке введенным с клавиатуры словом,нужно сделать это циклами
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

1. Создаём два буфера.

2. В первый считываем строку, второй будет использоваться для формирования результата.

3. Считываем слово, на которое будем заменять минимальные по длинне слова.

4. Пробегаем по первому буферу, вычисляя длину минимального слова (в цикле если не пробел, увеличиваем длину текущего слова, иначе проверяем минимальная ли она и запоминаем если так, затем сбрасываем переменную, хранящую длину текущего слова в ноль).

5. Теперь формируем результат. Здесь придётся немного повозьться. Очень подробно расписывать не буду, так как получится слишком громоздко. Общий смысл в том, чтобы иметь указатель на текущий обрабатываемый символ во входном буфере (буфер 1) и указатель на текущий обрабатываемый символ в выходном буфере (буфер 2). Нужно идти по входному буферу, забегая вперёд на слово и проверяя, равна ли его длина длине, вычисленной в пункте 4. Если равна, то переходим в режим замены и вписываем начиная с текущего указателя выходного буфера введённое слово для замены. Если не равна, то просто бежим до начала следующего слова посимвольно копируя элементы входного буфера в выходной и инкрементируя указатели текущих элементов.

6. Выводим буфер 2.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Chiiif2
Сообщения: 4
Зарегистрирован: 17 май 2014, 13:26

Romeo,спасибо)
Ответить