Консультация № 175663
27.12.2009, 17:35
35.00 руб.
0 4 0
Добрый вечер!
Дана строка символов. Группа символов между пробелами считается словом. Упорядочить слова по возрастанию.

Обсуждение

Неизвестный
27.12.2009, 18:36
общий
LfiN:
Добрый вечер, коллега! Как я понимаю, решение, состоящее в создании и сортировке массива слов Вас не устраивает? Нужно упорядочить внутри заданной строки?
давно
Специалист
246813
155
27.12.2009, 18:49
общий
lamed:
Устроит и через массив. Просто времени совсем нет.
Неизвестный
27.12.2009, 20:07
общий
LfiN:
Решение неэффективное, поэтому в ответ не выкладываю.
Код:
{
Дана строка символов.
Группа символов между пробелами считается словом.
Упорядочить слова по возрастанию
}
program p175663;
const
MaxWords = (255+1) div 2;
{ маскимально возможное количество слов }
type
TWords = array[1..MaxWords] of string;
var
s_in, s_out: string;
w: TWords;
i,j: integer;
len: integer;
size: integer;
tmp: string;
in_word : boolean;
begin
write('Строка ');
readln(s_in);
if (s_in <> '') then begin
s_in:= s_in+' '; { добавим пробел }
len := length(s_in);
i:=1;
size := 0;
in_word := false;
while (i<len) do begin
if s_in[i] = ' ' then
in_word := false
else if (s_in[i] <> ' ') and not(in_word) then begin
in_word := true;
inc(size);
w[size] := ''+s_in[i];
end
else if (s_in[i] <> '_') and (in_word) then begin
w[size] := w[size]+s_in[i];
end;
inc(i);
end;

{ сортировка }
for i:= 1 to size-1 do begin
for j:= size downto i+1 do begin
if w[j]<w[j-1] then begin
tmp := w[j];
w[j] := w[j-1];
w[j-1] := tmp;
end;
end;
end;

{ выходная строка }
s_out := '';
for i:= 1 to size-1 do
s_out := s_out + w[i]+' ';
s_out := s_out + w[size];

writeln('Строка после сортировки ', s_out);
end
else
writeln('Пустая строка');
readln;
end.

давно
Специалист
246813
155
27.12.2009, 20:22
общий
lamed:
Большое спасибо!
Форма ответа