Показать сообщение отдельно
Старый 07.02.2011, 21:26   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Вот:
Код:
VAR
 S,S1:String;
 S2:Array[1..130] of String;
 i,i1,i2,j,k:Byte;
BEGIN
 WriteLn('Enter the string:');
 ReadLn(S);
 WriteLn;
 i:=0;
 k:=0;
 Repeat
  Repeat
   Inc(i);
  Until S[i]<>' ';
  i1:=i;
  Repeat
   Inc(i);
  Until (S[i]=' ') or (i=Length(S));
  If S[i]=' ' then i2:=i else i2:=i+1;
  Inc(k);
  S2[k]:=Copy(S,i1,(i2-i1));
 Until i=Length(S);
 WriteLn;
 WriteLn;
 For i:=1 to k do
  For j:=1 to k-i do
   If Length(S2[j])>Length(S2[j+1]) then
    begin
     S1:=S2[j+1];
     S2[j+1]:=S2[j];
     S2[j]:=S1;
    end;
 For i:=1 to k do
  Write(S2[i]+' ');
 WriteLn;
 ReadLn;
END.
Пояснения:
1. Вводится строка (которая даже может начинаться с пробелов).
2. Организуется цикл последовательного перебора символов строки.
3. Последовательно вычленяются слова. Сперва ищется номер символа, не являющегося пробелом (i1), затем перебор продолжается до первого пробела или конца строки. Номер такого символа есть i2. Таким образом, определяются номера символов-границ очередного слова.
4. Очередное найденное слово вычленяется командой Copy и заносится в массив S2.
5. Методом "пузырька" массив упорядочивается по длинам слов.

Устроит?
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070