Распечатать самое длинное слово

Ответить
USILOK
Сообщения: 2
Зарегистрирован: 28 апр 2009, 21:39

Дано n строк.Распечатать для каждой строки слово,имеющее наибольшую длину.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Допустим N строк хранятся в массиве S.
Letters - это множество символов, составляющиеся слова.
например Set of char = ['A','Z','a','z','А','Я','а','я']
Все остальное считается разделителями.

Код: Выделить всё

for i:=1 to N do begin
  MaxLen:=0; Len:=0; Pos:=0; MaxPos:=0;
  for j:=1 to length(S[i]) do begin
    if S[i][j] in Letters then begin {слово продолжается}
        inc(Len);
        if Len=1 then Pos:=j; {запоминаем, где оно началось}
    end else begin {слово закончилось}  
        if Len>MaxLen then begin   {...и если оно длинее MaxLen...}
          MaxLen:=Len; {...запоминаем его длину и положение}
          MaxPos:=Pos;
        end;
    end;
  end; {i-я строка обработана}
  if MaxPos>0 
    then writeln('в строке ',i,' самое длинное слово: ' copy(S[i]),MaxPos,MaxLen));
    else writeln('в строке ',i,' не найдено ниодного слова');
end;
PS
1) посмотрите аргументы функции copy. Дано ею не пользовался. Не помню порядок аргументов
2) при использовании в Delphi используйте квалификатор System. Т.е. System.copy...
Ответить