Помощь - Поиск - Пользователи - Календарь
Полная версия: Сортировка строки в зависимости от длинны слов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Mordok
В общем надо составить процедуру которая сортировала бы строку в зависимости длинны слов от пробела до пробела. Т.е. на первом месте должно оказаться самое короткое слово, дальше слова идут по возрастанию длинны и на последнем месте самое длинное слово... Если не сложно подскажите плииз. Хотябы алгоритм...
Заранее благодарен.
volvo
Идешь сюда:
Разбиение на слова. Все способы.
выбираешь любой способ разбиения строки на слова, сортируешь массив слов по возрастанию длины любым способом отсюда:
Методы сортировок
, собираешь слова в отсортированном порядке в строку...
Mordok
спасибо большое за совет, только я придумал алгоритм гораздо проще....
если кому надо могу выложить.
мисс_граффити
интересно...
выкладывай.
Mordok
Ну вот мой алгоритм, я не буду писать процедуры просто напишу работающую программу

Цитата

const
A=30;
t='.';
p=' ';

type
T_Array=array[1..A] of integer;

var
s1,sortpr:string;
i,j,k,n,cons,cons1:integer;
f,f1:boolean;
index,dlinna:T_Array;

begin
readln (s1);

sortpr:='';
i:=0;j:=0;k:=0;

while i<>length(s1) do
begin
f:=false;
i:=i+1;
k:=i;
repeat
if (s1[i]=t) or (s1[i]=p) then
begin
f:=true;
j:=j+1;
end
else i:=i+1;
until f;
n:=i-k;
index[j]:=k;
dlinna[j]:=n;
end;

begin
repeat
f1 := FALSE;
for j := 1 to A-1 do
if dlinna[j] > dlinna[j+1] then
begin
cons := dlinna[j]; cons1:= index[j];
dlinna[j] := dlinna[j + 1]; index[j]:= index[j+1];
dlinna[j + 1] := cons; index[j+1]:=cons1;
f1 := TRUE;
end;
until not f1;
end;

begin
for j:=1 to a do
for k:=1 to length(s1) do
if (k>=index[j])and(k<=index[j]+dlinna[j]) then sortpr:=sortpr+s1[k];
end;

write(sortpr);
readln;

end.



все просто, берем строку считаем длинну от пробела до пробела или до точки (можно еще и другие символы но это не важно), записывам длинну слов и индексы начала слова в отдельные массивы, затем пузырьком сортируем длинны и индексы (в зависимости от длинны естественно) ну и в конце записываем все в новую строку по этим отсортированным массивам индексов и длинн...
volvo
Цитата
только я придумал алгоритм гораздо проще....
Я посмотрю, как ты с этим ПРОСТЫМ алгоритмом (а точнее - с его реализацией) разберешься через месяц, если тебе это понадобится (а оно понадобится, даже не сомневайся)... Вот то что я тебе предложил - я сделал 6 лет назад, и с первого взгляда можно объяснить работу программы начиная с любой строки (даже через ГОДЫ, не говоря уже о месяце-двух)... А ты будешь переделывать программу заново каждый раз... Ну что ж, "каждому свое" (С)...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.