Задача 18 урок 13.1
Primary tabs
http://fkn.ktu10.com/?q=node/8697
Модифицируйте решение предыдущей задачи, так, чтобы длина возрастающего фрагмента каждый раз увеличивалась на единицу (начиная с двух):
8 10 два числа3 10 12 14 три числа3 16 18 20 22 четыре числа 3....3....и т.д.!!ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно), при этом решение одним циклом можно сделать, как используя делимость нацело (для определения момента вывода тройки), так и не используя.
Решите всеми тремя способами.
// 1 цикл + деление (mod)
program task18_1_lesson13_1;
var n, m, i, k, j, c : integer;
begin
j:=8; //n1 последовательности
k:=0; //разность -> n2-n1...
readln(n);
m:=2; //старт локация "3"
c:=0; //счётчик #элемента послед.
if n<0 then
writeLn ('error')
else
begin
for i:=1 to n do
begin
write(j + k,' ');
k := k + 2;
c := c + 1;
if ((c mod m) = 0) then
Begin
write(3, ' ');
c := 0;
m := m +1;
end;
end;
end;
readLn();
end.
Второй способ:
//вложеный цикл
program task18_2_lesson13_1;
var
m, n, i, j, c, k:Integer;
begin
readLn(n);
k:=8;
c:=0;
i:=1;
m:=2;
if n < 0 then
writeln('error')
else
begin
while i < n do //i-ый член послед. меньше N-ного
begin
for j:=1 to m do //пишем члены последовательности до "3"
begin
write(k+c, ' ');
i := i + 1; //счет кол-ва элементов послед.
c := c + 2; //разность N-ного члена и первого
end;
write (3, ' ');
m := m + 1; //меняю положение "3" -> влияет на цикл FOR
end ;
readLn();
end ;
end.Третий:
// 1 цикл БЕЗ деления
program task18_1_lesson13_1;
var n, m, i, k, j, c : integer;
begin
j := 8; //n1 последовательности
k := 0; //разность -> n2-n1...
readln(n);
i := 0;
m := 2; //старт локация "3"
c := 0; //счётчик #элемента послед.
if (n < 0) then
writeLn ('error')
else
begin
repeat
i := i + 1; //следующий член последовательности до "3"
write(j + k,' ');
k := k + 2;
c := c + 1; // счетчик кол-ва членов (чтобы не привысить N)
if (i = m) then
Begin
write(3, ' ');
i := 0; //обнулили и снова считаем сколько чисел от "3" до "3"
m := m +1;
end;
until (c = n);
end;
readLn();
end.
- Log in to post comments
- 1123 reads