SIgor33
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору uses crt; const zn=['.','?','!','...'];{символы конца предложения} zn1=['.','?','!',',',';',':'];{все знаки препинания, можно добавить всякие скобки} var s,s1,s2,s3:string; i,len,max:byte; begin clrscr; writeln('Vvedite text:'); readln(s); s3:=s; {запомним строку} max:=0;{максимальная длина предложения} len:=0;{длина очередного предложения} s1:='';s2:=''; i:=1; while i<=length(s) do begin if s[i] in zn then{если конец предложения} begin s1:=copy(s,1,i);{запоминеам его} len:=i-1;{его длина без последнего знака} delete(s,1,i);{удаляем его} if len>max then{если длина больше предыдущего макс} begin max:=len;{это макс} s2:=s1;{запоминаем предложение} end; i:=i+1;{к следующему символу} end else i:=i+1;{если не конец предложения, то просто к следующему} end; writeln(s2);{выводим предложение} for i:=1 to length(s3) do if s[i] in zn1 then s[i]:=' ';{заменяем все знаки препинания на пробелы} s3:=s3+' ' ;{пробел в конец} while pos(' ',s3)>0 do{пока 2 пробела подряд} delete(s3,pos(' ',s3),1);{1 удаляем} max:=0;s1:='';s2:='';len:=0;{обнуляем длину и все почти также с этой строкой} while pos(' ',s3)>0 do begin s1:=copy(s3,1,pos(' ',s3)-1); len:=length(s1); delete(s3,1,pos(' ',s3)); if len>max then begin max:=len; s2:=s1; end; end; write(s2);{выводим слово} write(length(s2));{выводим длину слова} readln end. |