Задача на строки. Пожалуйста, помогите.

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

Ответить
Lizi
Сообщения: 1
Зарегистрирован: 18 апр 2011, 16:32

Дан текст, состоящий из N (2<N<10) строк с максимальной длиной 80 символов. Необходимо вывести в обратном алфавитном порядке первые слова всех предложений. Считать, что текст написан синтаксически грамотно, в качестве знаков препинания используются точка и запятая, слова состоят только из букв, перенос слов по слогам отсутствует. Для выделения слов из строки создать пользовательскую функцию. Для выделения слов из строки создать пользовательскую функцию.
Пожалуйста, объясните хотя бы как её нужно решать, ни фига не получается. Или киньте ссылку на какой-нибудь учебник по строкам в СИ++. Зарание спасибо.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Библиотека STL разрешена для использования?

Если да, то всё очень просто. Проходим по строкам в цикле используя например функцию strtok, которой в качестве делимитров переданы пробел, запятая и точка. Запихивает рассечённые слова в std::vector, затем сортируем его, передав в функцию std::sort дополнительным параметром функтор std::greater<std::string>.

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