PascalABC. Вставить после каждого слова исходной строки, заканчивающегося ** букву «о»,...

0 голосов
68 просмотров

PascalABC. Вставить после каждого слова исходной строки, заканчивающегося на букву «о», слово «Ого». Уже видел решение этой задачи, но там программа выполнялась только когда после символа "о" стоял пробел. Т.е. когда слово с "о" на конце было последним и нужно было нажать enter для окончания ввода, программа не выполнялась, требовался пробел. Если хотите что-либо уточнить, задайте вопрос, но только по делу


Информатика (68 баллов) | 68 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Program ogo;
var t,s: string; n,m,i: integer;
begin
  writeln ('Введите строку:');
  readln (t);
  n:=length(t); //длина исходной строки
  s:=' ого'; //вставляемый фрагмент
  m:=length(s);  //длина вставки
  i:=2;
  while i<=n do //через while, т.к. нужно изменять счетчик вручную<br>    begin
      if (((t[i-1]='О') or (t[i-1]='о')) and (ord(t[i])<160))<br>        then begin
          insert(s,t,i); //вставка ого;
          n:=length(t); //новая длина строки
          i:=i+1+m; //перескакиваем через вставку
        end
        else
          if (((t[i]='О') or (t[i]='о')) and (i=n)) //проверку последнего символа пришлось вынести отдельно
            then begin
              insert(s,t,i+1);//вставка ого;
              n:=length(t); //новая длина строки
              i:=i+1+m;
            end
            else i:=i+1;
    end;
  writeln (t)
end.
______________________

Пример:

Введите строку:
О, как прекрасно это море! Как красиво это небо
О ого, как прекрасно ого это ого море! Как красиво ого это ого небо ого

(3.9k баллов)
0

Ну как? Почиталось?

0

Да, спасибо большое)