Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Обработка символов и строк

Автор: annna 20.04.2004 10:05

Дано несколько слов, в каждом из которых от одной до семи строчных букв; между соседними словами - не менее одного пробела, за последним словом точка. Напечатать слово с максимальной длиной.

Автор: APAL 20.04.2004 15:42

Где-то подобная задача уже была...

Пишу прямо здесь, без проверки:

Код
Function GetMaxLengthSt(St : String) : String;
Var
 Smax,Scur : String;
 i : Byte;
Begin
 Scur:=''; i:=1;
Repeat
 While St[i]=' ' do Inc(i);
 While (St[i]<>' ')  and (St[i]<>'.') do
 Begin
   Scur:=Scur+St[i];
   Inc(i);
 End;
 If Length(Scur)>Length(Smax) then Smax:=Scur;
Until St[i]='.';
 GetMaxLengthSt:=Smax;
End;

Автор: P@sh@ 20.04.2004 15:47

Код

var s: string;
   i,n,imax,nmax: integer;
begin
 writeln('Введите строку:');
 readln(s);
 i:=1; nmax:=0;
 repeat
   while s[i]=' ' do i:=i+1;
   n:=i;
   while (s[i]<>' ') and (s[i]<>'.') do i:=i+1;
   if i-n>nmax then begin
     nmax:=i-n; imax:=n;
   end;
 until s[i]='.';
 if nmax=0 then writeln('Просто нет слов')
 else writeln('Самое длинное - ',copy(s,imax,nmax));
end.

написал только что... не проверял

Автор: P@sh@ 20.04.2004 15:48

блин, опоздал немного... smile.gif