Задача 18 урок 13.1
Primary tabs
Задача 18 урок 13.1
Модифицируйте решение предыдущей задачи, так, чтобы длина возрастающего фрагмента каждый раз увеличивалась на единицу (начиная с двух): ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно), при этом решение одним циклом можно сделать, как используя делимость нацело (для определения момента вывода тройки), так и не используя.
Решите всеми тремя способами.
Способ 1 с вложенным циклом
var N, i, f, m: integer;
begin
m := 2; //длина четного блока
f := 8; //переменная основного ряда чисел
writeln('Введите положительное число N');
readln(N);
if (N > 0) then
begin
while (f < N) do
begin
for i := 1 to m do //цикл вывода блока четных
begin
if f > N then
break
else if (i < m) then //
begin
write(f, ' ');
f := f + 2;
end
else //последняя итерация for
begin
write(f, ' ');
write(3, ' '); //принт '3' и увеличиваем блок чет
f := f + 2;
m := m + 1;
end;
end;
end;
end
else
writeln('Ошибка');
readln();
end.Одним циклом с mod
var N, i, f, m: integer; // m - порядковый номер нечет
begin
m := 1;
f := 2; // перемен адрес '3'
writeln('Введите положительное число N');
readln(N);
if (N > 0) then
begin
for i := 8 to N do
begin
if (i mod 2 = 0) then //если чет - принт чет
write(i, ' ')
else if (m = f) then
begin
write(3, ' ');
f := f + 1; //сдвигаем адрес '3'
m := 1 //обнуляем номер нечет
end
else
m := m + 1; //считаем нечет
end;
end
else
writeln('Ошибка');
readln();
end.Одним циклом без mod
var N, i, m, t: integer;
begin
t := 0; //счетчик количества выводов четного
m := 2; //необходимость выводов четного
i := 8; // щсновной ряд
writeln('Введите положительное число N');
readln(N);
if (N > 0) then
begin
while (i <= N) do
begin
write(i, ' ');
i := i + 2;
t := t + 1;
if (t = m) then
begin
t := 0;
m := m + 1;
write(3, ' ');
end;
end;
end
else
writeln('Ошибка');
readln();
end.- Log in to post comments
- 806 reads