Задача 18 Урок 13.1
Primary tabs
Модифицируйте решение предыдущей задачи, так, чтобы длина возрастающего фрагмента каждый раз увеличивалась на единицу (начиная с двух):
810два числа3101214три числа316182022четыре числа3....3....и т.д.
ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно), при этом решение одним циклом можно сделать, как используя делимость нацело (для определения момента вывода тройки), так и не используя.
Решите всеми тремя способами.
1) С помощью вложенных циклов
program U131Z18;
var n,s,m,k: integer;
begin
writeln('vvedite polozhitelnoe chislo');
readln(n);
if n<0 then
writeln('oshibka')
else
begin
m:=2;
s:=0;
k:=8;
while k<=n do
begin
while (k<=n) and (s<m) do
begin
write(k,' ');
k:=k+2;
s:=s+1;
end;
write('3 ');
m:=m+1;
s:=0;
end;
end;
readln();
end. 2) используя делимость нацело
program U131Z18;
var n,s,m,k: integer;
begin
writeln('vvedite polozhitelnoe chislo');
readln(n);
if n<0 then
writeln('oshibka')
else
begin
m:=2;
s:=0;
k:=8;
while k<=n do
begin
write(k,' ');
k:=k+2;
s:=s+1;
if ((s mod m)=0) then
begin
write('3 ');
m:=m+1;
s:=0;
end;
end;
end;
readln();
end. 3) НЕ используя делимость нацело
program U131Z18;
var n,s,m,k: integer;
begin
writeln('vvedite polozhitelnoe chislo');
readln(n);
if n<0 then
writeln('oshibka')
else
begin
m:=2;
s:=0;
k:=8;
while k<=n do
begin
write(k,' ');
k:=k+2;
s:=s+1;
if (s=m) then
begin
write('3 ');
m:=m+1;
s:=0;
end;
end;
end;
readln();
end. - Log in to post comments
- 1358 reads
vedro-compota
Tue, 09/14/2021 - 22:42
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)