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 a,p:integer;b,s:real;
begin
writeln ('введите периметр',p);
readln (p);
writeln ('введите длину',a);
readln (a);
b:=((2*a-p)/-2);
s:=a*b;
writeln (s);
End.