Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Интересная задача на строковый тип данных

Автор: Rocket 6.12.2006 22:32

good.gif Помогите пожалуйста написать программу:
Дана строка, состоящая из русских слов, разделённых пробелами (одним или несколькими).
Вывести строку, содержащую эти же слова, но расположенные в обратном алфавитном порядке.

Автор: volvo 6.12.2006 23:50

Эта задача интересна для тебя... Для других - нет, потому, что уже решена. Ищи...

Автор: Rocket 7.12.2006 18:28

Цитата(volvo @ 6.12.2006 19:50) *

Эта задача интересна для тебя... Для других - нет, потому, что уже решена. Ищи...

А ты знаешь, где она есть? Где искать?
Подскажи как решать.

Автор: Ozzя 7.12.2006 19:39

http://forum.pascal.net.ru/index.php?act=Search&f=12

Автор: Rocket 8.12.2006 1:50

Я искал, но ничего подобного не нашёл.
Какие хоть у кого есть мысли!

Автор: klem4 8.12.2006 1:56

И что же ты искал ?

Поиск -> "обратном алфавитном порядке"



http://forum.pascal.net.ru/index.php?showtopic=6972

Простейший вариант: Получаешь массив слов, и выводишь его с конца
По сложнее: "развертывешь" строку "на ходу" c конца и выводишь слова.

Все это есть в приведенной ссылке.

Автор: volvo 8.12.2006 6:58

Цитата
Получаешь массив слов, и выводишь его с конца
Не совсем...

Получаешь массив - Да, потом - сортируешь по убыванию, и только потом выводишь smile.gif

Автор: klem4 8.12.2006 11:17

yes2.gif

Мой нещастный мозг почемуто интерпритировал задание как "вывести слова строки в обратном порядке", volvo естественно прав.

Автор: Rocket 10.12.2006 3:09

Ребятушки! Программистушки! Нужно решать непосредственно со строкой, а не разворачивать её в массив.
Светлая голова найдётся? Задачу нужно решить позарез!

Автор: klem4 10.12.2006 10:16

Ты читать умеешь ?

Цитата
"развертывешь" строку "на ходу" c конца и выводишь слова.


Где тут хоть одно слово о массиве ?


погорячился я что-то.

Автор: volvo 11.12.2006 20:36

Цитата
Нужно решать непосредственно со строкой, а не разворачивать её в массив.
Ты сам хотел...
var
s, _word, _max: string;
i, start: integer;
finished: boolean;

begin
write('s = '); readln(s);

s := s + ' ';
repeat
finished := true;
_word := ''; _max := '';

for i := 1 to length(s) do begin

if s[i] = ' ' then begin
if _word > _max then begin

start := i - length(_word);
_max := _word;

end;
_word := '';
end
else begin
_word := _word + s[i];
finished := false;
end;

end;

if not finished then begin
delete(s, start, length(_max));
write(_max: length(_max) + 1);
end
else writeln;

until finished;
end.


Автор: Rocket 12.12.2006 22:09

Большое спасибо и бесконечный respect Volvo. good.gif