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