Задача 18 Урок 13

Задача 18 Урок 13

Модифицируйте решение предыдущей задачи, так, чтобы длина возрастающего фрагмента каждый раз увеличивалась на единицу (начиная с двух):
810два числа3101214три числа316182022четыре числа3....3....и т.д.
ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно), при этом решение одним циклом можно сделать, как используя делимость нацело (для определения момента вывода тройки), так и не используя.
Решите всеми тремя способами.

program lesson13_18_1;
var
    a, b, i, k: integer;
begin
    repeat
        writeln('enter even number');
        readln(a);
        if a > 0 then
        begin
            i := 8;
            k := 1;
            b := 2;
            while i <= a do
            begin
			    write(i, ' ');
                i := i + 2;
                if (k = b) and (i <= a) then
                begin
                    write('3 ');
                    k := 1;
                    b := b + 1;
				end
				else
                    k := k + 1;
			end;
		end
		else
            writeln('error');
        writeln();
	until a <= 0;
    readln();
end.
program lesson13_18_2;
var
    a, b, i, k: integer;
begin
    repeat
        writeln('enter even number');
        readln(a);
        if a > 0 then
        begin
            i := 8;
            k := 1;
            b := 2;
            while i <= a do
            begin
			    write(i, ' ');
                i := i + 2;
                if (k mod b = 0) and (i <= a) then
                begin
                    write('3 ');
                    k := 1;
                    b := b + 1;
				end
				else
                    k := k + 1;
			end;
		end
		else
            writeln('error');
        writeln();
	until a <= 0;
    readln();
end.
program lesson13_18_3;
var
    a, b, i, j: integer;
begin
    writeln('enter even number');
    readln(a);
    i := 8;
    b := 2;
    if a > 0 then
        while i <= a do
        begin
            for j := 1 to b do
            begin
                if i > a then
                    break;
                write(i, ' ');
                i := i + 2;
			end;
			b := b + 1;
            if i <= a then
                write('3 ');
        end
	else
        writeln('error');
	readln();
end.