Лучший ответ

    1.  3 0

    Енот 8 (343248)628642 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.

Ответы

    1.  2 0

    HypnoiZe (41) 4 (2100)510 13 лет  

    Подсчитай ко-во знаков между пробелами, забей значения в массив, сравни.

Похожие вопросы

Рейтинг@Mail.ru Top.LV PULS.LV Professional rating system