Задача 18 Урок 13.1
Primary tabs
Модифицируйте решение предыдущей задачи, так, чтобы длина возрастающего фрагмента каждый раз увеличивалась на единицу (начиная с двух):
ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно), при этом решение одним циклом можно сделать, как используя делимость нацело (для определения момента вывода тройки), так и не используя.
Решите всеми тремя способами.
Два цикла:
var a,b,m,i:integer; p:boolean; begin p:=true; b:=8; m:=2; writeln('vvedite chislo bolshe 8'); readln(a); if a<=8 then writeln('Error') else while (b<=a) do begin for i:=1 to m do begin if (b<=a) then write(b,' ') else p:=false; b:=b+2; end; if (p) then begin write(3,' '); m:=m+1; end; end; readln(); end.
Вывод консоли:
vvedite chislo bolshe 8 25 8 10 3 12 14 16 3 18 20 22 24 3
Используя делимость нацело (для определения момента вывода тройки):
var a,b,m,j:integer; begin m := 2; b := 8; j:=0; writeln('vvedite chislo bolshe 8'); readln(a); if a<=8 then writeln('Error') else repeat write (b, ' '); b+= 2; j+= 1; if (j mod 2 = 0) and (j = m) then begin write (3, ' '); j := 0; m += 1; end else if (j mod 2 = 1) and (j = m)then begin write (3, ' '); j := 0; m += 1; end; until (b > a); readln(); end.
Вывод консоли:
vvedite chislo bolshe 8 25 8 10 3 12 14 16 3 18 20 22 24 3
Не используя делимость нацело (для определения момента вывода тройки).:
var a,b,m,j:integer; begin m := 2; b := 8; j:=0; writeln('vvedite chislo bolshe 8'); readln(a); if a<=8 then writeln('Error') else repeat write (b, ' '); b+= 2; j+= 1; if (j mod 2 = 0) and (j = m) then begin write (3, ' '); j := 0; m += 1; end else if (j mod 2 = 1) and (j = m)then begin write (3, ' '); j := 0; m += 1; end; until (b > a); readln(); end.
Вывод консоли:
vvedite chislo bolshe 8 35 8 10 3 12 14 16 3 18 20 22 24 3 26 28 30 32 34 3
- Log in to post comments
- 157 reads