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, т.к. нужно изменять счетчик вручную begin if (((t[i-1]='О') or (t[i-1]='о')) and (ord(t[i])<160)) 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.
Пример:
Введите строку: О, как прекрасно это море! Как красиво это небо О ого, как прекрасно ого это ого море! Как красиво ого это ого небо ого
Четный - нацело делится на 2, кратный трем - нацело делится на 3. Самый простой алгоритм, который приходит в голову - дурацкий. Перебираем все числа и проверяем каждое, подходит ли оно. Гораздо проще взять первое подходящее число из заданного диапазона, а потом идти от него с шагом, равным 2 или 3 (смотря чему нужна кратность).
// PascalABC.NET 3.2, сборка 1341 от 20.11.2016 begin Range(30,48,2).Println; // 1-я задача Range(30,55,3).Println // 2-я задача end.
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, т.к. нужно изменять счетчик вручную
begin
if (((t[i-1]='О') or (t[i-1]='о')) and (ord(t[i])<160))
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.
Пример:
Введите строку:
О, как прекрасно это море! Как красиво это небо
О ого, как прекрасно ого это ого море! Как красиво ого это ого небо ого
Самый простой алгоритм, который приходит в голову - дурацкий. Перебираем все числа и проверяем каждое, подходит ли оно. Гораздо проще взять первое подходящее число из заданного диапазона, а потом идти от него с шагом, равным 2 или 3 (смотря чему нужна кратность).
// PascalABC.NET 3.2, сборка 1341 от 20.11.2016
begin
Range(30,48,2).Println; // 1-я задача
Range(30,55,3).Println // 2-я задача
end.
Результат
30 32 34 36 38 40 42 44 46 48
30 33 36 39 42 45 48 51 54