Урок 13.1. Вложенные циклы. Задача №18.
Primary tabs
Модифицируйте решение предыдущей задачи, так, чтобы длина
возрастающего фрагмента каждый раз увеличивалась на единицу
(начиная с двух):
8 10 два числа 3 12 14 16 три числа 3 18 20 22 24 четыре числа ...3... и т.д.
ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами,
так и вообще одним циклом (что более изящно),
при этом решение одним циклом можно сделать, как используя делимость нацело
(для определения момента вывода тройки), так и не используя.
Решите всеми тремя способами.
var i, j, k, M, N : integer;
// Первый способ: вложенными циклами.
begin
M := 2;
i := 8;
writeln ('Enter positive integer: ');
readln (N);
if (N < 0) then
writeln ('Error! You enter negative integer, try again!')
else begin
while (i <= N) do
begin
for j := 1 to M do
begin
if (i <= N) then
write (i, ' ');
i += 2;
end;
M += 1;
write (3, ' ');
end;
end;
// Второй способ: один цикл
//используя делимость нацело (для определения момента вывода тройки).
k := 2;
i := 8;
writeln ('Enter positive integer: ');
readln (N);
if (N < 0) then
writeln ('Error! You enter negative integer, try again!')
else begin
repeat
write (i, ' ');
i += 2;
j += 1;
if (j mod 2 = 0) and (j = k) then
begin
write (3, ' ');
j := 0;
k += 1;
end
else if (j mod 2 = 1) and (j = k)then
begin
write (3, ' ');
j := 0;
k += 1;
end;
until (i > N);
end;
// Третий способ: один цикл (for)
// не используя делимость нацело (для определения момента вывода тройки).
k := 2;
writeln ('Enter positive integer: ');
readln (N);
if (N < 0) then
writeln ('Error! You enter negative integer, try again!')
else begin
for i := 8 to N do
begin
if (i mod 2 = 0) then
begin
write (i, ' ');
j += 1;
end;
if (j >= k) then
begin
write (3, ' ');
j := 0;
k += 1;
end;
end;
end;
// Третий способ: один цикл (while)
// не используя делимость нацело (для определения момента вывода тройки).
i := 8;
k := 2;
writeln ('Enter positive integer: ');
readln (N);
if (N < 0) then
writeln ('Error! You enter negative integer, try again!')
else begin
while (i <= N) do
begin
write (i, ' ');
i += 2;
j += 1;
if (j = k) then
begin
write(3, ' ');
j := 0;
k += 1;
end;
end;
end;
readln(); // Удержание консоль
end.// Завершение программы- Log in to post comments
- 1591 reads