Урок 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
- 1318 reads