Помощь - Поиск - Пользователи - Календарь
Полная версия: Строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
alexey13
программа, данная ниже, позволяет ввести и отсортировать только одну строку, а нужно несколько! help me)

прога сортирует слова по возрастанию! =)

program z14;
uses crt;
var a,d,sl1,sl2 : string;
    i,l,k,j : longint;
    b : array [1..50] of string;
begin
  clrscr;
  write('input s: ');readln(a);
  l:=length(a);
  if a=''then halt;
  if a[l]<>' ' then begin inc(l);a[l]:=' '; end;
  for i:=1 to l do
  if a[i]=' 'then begin
		    inc(j);b[j]:=d;d:='';
		  end
	       else d:=d+a[i];
  for i:=1 to j-1 do
  for k:=i+1 to j do
  begin
    sl1:=b[i];
    sl2:=b[k];
    if length(sl1)>length(sl2) then begin
				      b[i]:=sl2;
				      b[k]:=sl1;
				    end;
  end;
  for i:=1 to j do write(' ',b[i]);
  readln;
end.

IUnknown
Не по возрастанию, а по количеству букв в слове smile.gif

Оберни это все циклом repeat/until - будет несколько строк обрабатывать:
   repeat
      write('input s: ');readln(a);
      l:=length(a);
      if a <> '' then
      begin
         j := 0; d := '';
         if a[l]<> ' ' then
         begin
            inc(l); a[l]:=' ';
         end;

         for i:=1 to l do
            if a[i]=' 'then
            begin
               inc(j);b[j]:=d;d:='';
            end
            else d:=d+a[i];

            for i:=1 to j-1 do
               for k:=i+1 to j do
               begin
                  sl1:=b[i];
                  sl2:=b[k];
                  if length(sl1)>length(sl2) then
                  begin
                     b[i]:=sl2;
                     b[k]:=sl1;
                  end;
               end;
         for i:=1 to j do
            write(' ',b[i]);
         writeln;
      end;
   until a = '';

Я заодно инициализацию переменных j и d добавил, нехорошо это, использовать неинициализированные переменные. На одном проходе может и отработает, а вот зациклил - и уже надо добавлять присвоение начальных значений, без этого будет выдавать неправильные результаты...
alexey13
Спасибо большое)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.