Задача 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
- 564 reads