profile
Опубликовано 5 лет назад по предмету Информатика от Аккаунт удален

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

  1. Ответ
    Ответ дан DonPedro80
    var
      l,i:integer;
      s,w:string;
      prt:boolean;
      c:char;

    begin
      { s:='  Арбуз    вагон  барабан Goodday   dummy.  '; }
      Write('Введите строку: ');
      Readln(s);
      l:=Pos('.',s);
      s:=Copy(s,1,l-1)+' ';
      i:=1;
      prt:=False;
      w:='';
      while i<=l do
      begin
        c:=s[i];
        if c=' ' then
        begin
          if prt then
            begin
            if Length(w)>2 then Write(Copy(w,1,Length(w)-2),' ');
            w:='';
            prt:=not prt
            end
        end
        else
        begin
          w:=w+s[i];
          prt:=True
        end;  
        Inc(i)
      end;
      Writeln
    end.
    1. Ответ
      Ответ дан Аккаунт удален
      Я уже эту задачу сам решил.
    2. Ответ
      Ответ дан DonPedro80
      теперь решай остальные
    3. Ответ
      Ответ дан Аккаунт удален
      Решения на "отлюбись" мне не интересны.
    4. Ответ
      Ответ дан Аккаунт удален
      И остальные я уже почти все решил)
    5. Ответ
      Ответ дан DonPedro80
      маладец. Тебя на полке ждет твой пирожок
  2. Ответ
    Ответ дан petyaGavrikov
    var s1,s2:string;
    i:integer;
    begin
    writeln('Введите строку:');
    readln(s1);
    while pos('  ',s1)>0 do delete(s1,pos('  ',s1),1);
    s1[length(s1)]:=' ';
    s2:='';
    for i:=1 to length(s1)-2 do
     if (s1[i+2]<>' ')and(s1[i+1]<>' ')
      then s2:=s2+s1[i];
    writeln(s2);
    end.

    Пример:
    Введите строку:
    все слова    удалив   две   последние      буквы.
    в сло удал д последн бук
    1. Ответ
      Ответ дан Аккаунт удален
      Тоже неточность в коде. Но в остальных задач всё написал правильно. Можешь тупо поменять код на тот, что ниже в комментариях и отмечу как лучший ответ.
    2. Ответ
      Ответ дан Аккаунт удален
      var str,sl,sn: string;
      i: integer;
      begin
      write('Введите текст:');
      readln(str); str:=str+' '; sl:=''; sn:='';
      for i:=1 to length(str) do
      if str[i]<>' ' then sl:=sl+str[i] else
      if length(sl)>0 then
      begin
      if length(sl)>2 then begin delete(sl,(length(sl)-1),2); end;
      sn:=sn+' '+sl;
      sl:='';
      end;
      write('Конечный текст: ',sn);
      end.
    3. Ответ
      Ответ дан Aillianna
      Код жуткий и малочитабельный
    4. Ответ
      Ответ дан Aillianna
      вообще такие задачи регекспами решаются
Самые новые вопросы