Страница 1 из 1

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

Добавлено: 28 апр 2009, 22:47
USILOK
Дано n строк.Распечатать для каждой строки слово,имеющее наибольшую длину.

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

Добавлено: 29 апр 2009, 08:54
Naeel Maqsudov
Допустим 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...