Лучший ответ
-
3 0
Енот 8 (343319)628644 13 лет
uses crt;
const rz=[' ','.',',','?','!'];
var s,s1,s2,s3:string;
sk,sd:string;
k,d,i,ik,id,j,p:byte;
begin
clrscr;
writeln('Введите строку из слов, отделенных разделителями:');
readln(s);
i:=1;
d:=0;id:=1;{длина длинного слова и его начало в строке}
k:=255;ik:=1;{длина корткого слова и его начало в строке}
while i<=length(s) do
if not(s in rz) then
begin
s1:='';{будем составлять слово}
j:=i;
p:=0;
while not(s[j] in rz)and(j<=length(s)) do
begin
s1:=s1+s[j];
j:=j+1;
p:=p+1;
end;
if length(s1)<k then{если меньше короткого}
begin
sk:=s1;{это короткое}
k:=length(s1);{его длина}
ik:=i;{начало в строке}
end;
if length(s1)>d then{то же с длинным}
begin
sd:=s1;
d:=length(s1);
id:=i;
end;
i:=i+p;
end
else i:=i+1;
writeln('Самое короткое слово ',sk);
writeln('Самое длинное слово ',sd);
if ik<id then{если короткое раньше}
begin
insert(sk,s,id);{вставляем короткое перед длинным}
delete(s,id+k,d);{удаляем длинное}
insert(sd,s,ik);{вставляем длинное на старое место короткого}
delete(s,ik+d,k);{удаляем короткое}
end
else{если длинное раньше, то все наоборот}
begin
insert(sd,s,ik);
delete(s,ik+d,k);
insert(sk,s,id);
delete(s,id+k,d);
end;
write(s);
readln
end.
Ответы
-
2 0
HypnoiZe (41) 4 (2100)510 13 лет
Подсчитай ко-во знаков между пробелами, забей значения в массив, сравни.