Задача 23 Урок 13.1
Primary tabs
Пользователь передает целое положительное число N, выведете на экран последовательность от 1 до N, так чтобы ширина "ёлочки" росла волнами. Например, для N=49 получим:
1 23--сначала до двух 4 56 789--потом до трёх 1011 12--возвращаемся к одному 1314 151617 18192021--тут уже четыре 222324 2526--снова убывает 27 2829 303132 33343536 3738394041 42434445 464748 49
program task23;
var a,b,n,m,c,i: integer;
begin
writeln('vvedite chislo N');
readln(n);
c:=1;
m:=1;
while (n>0) do
begin
if (a<=b) then
begin
write (c,' ');
a:=a+1;
c:=c+1;
n:=n-1;
end
else
begin
writeln();
if (b=(m)) then
begin
i:=1;
m:=m+1;
end
else if (b=0) then
i:=0;
if (b<(m)) and (i=0) then
begin
b:=b+1;
a:=0;
end
else
begin
b:=b-1;
a:=0;
end;
end;
end;
readln();
end. - Log in to post comments
- 4225 reads
vedro-compota
Sun, 11/13/2022 - 13:01
Permalink
убрать лишние скобки,
убрать лишние скобки, прокомментировать назначение переменных
_____________
матфак вгу и остальная классика =)
NikSo
Mon, 11/14/2022 - 10:32
Permalink
Скобки убрал, убрал n:=n-1; прокомментировал переменные
program task23; var a,b,n,m,c,i: integer; begin writeln('vvedite chislo N'); readln(n); c:=1; m:=1; while (n>=c) do begin if (a<=b) then begin write (c,' '); a:=a+1; //a-кол-во символов которое вывелось в строке c:=c+1; //b-кол-во символов которое нужно вывести в строке и end //определение четности строки else begin writeln(); if (b=m) then begin i:=1; m:=m+1; end else if (b=0) then i:=0; if (b<m) and (i=0) then begin b:=b+1; a:=0; end else begin b:=b-1; a:=0; end; end; end; readln(); end.vedro-compota
Sat, 11/19/2022 - 17:33
Permalink
//определение четности строки
зачем определять четность?
-- можно вынести за все условия, на первый уровень вложности
_____________
матфак вгу и остальная классика =)
NikSo
Mon, 11/21/2022 - 08:55
Permalink
Убрал комментарий(из другого задания), вывел блок вверх, for
program task23v2; var a,b,n,m,c,i,j: integer; //a-кол-во символов которое вывелось в строке begin //b-кол-во символов которое нужно вывести в строке writeln('vvedite chislo N'); //c-число которое нужно выводить readln(n); //n-число которое вводит пользователь c:=1; //m-для определения нужно ли строку увеличивать или уменьшать m:=1; for j:= 1 to n do begin write (c,' '); a:=a+1; c:=c+1; if (a>b) then begin writeln(); if (b=m) then begin i:=1; m:=m+1; end else if (b=0) then i:=0; if (b<m) and (i=0) then begin b:=b+1; a:=0; end else begin b:=b-1; a:=0; end; end; end; readln(); end.vedro-compota
Sun, 11/27/2022 - 13:32
Permalink
1)//c-число которое нужно
1)
-- можно сразу использовать счетчик цикла
2)
-- лучше переделать на равенство
3) что такое:
-- за что отвечает переменная?
4)
-- дублирование кода относительно переменной а
_____________
матфак вгу и остальная классика =)
NikSo
Tue, 11/29/2022 - 10:42
Permalink
Переделал решения,учел замечания
program task23v2; var a, //a-кол-во символов которое вывелось в строке b, //b-кол-во символов которое нужно вывести в строке n, //n-число которое вводит пользователь m, //m-считает максимальное кол-во символов i, //для определения увеличения или уменьшения строки j: integer; //счетчик цикла begin writeln('vvedite chislo N'); readln(n); m:=1; for j:= 1 to n do begin write (j,' '); if (a=b) then begin writeln(); a:=0; if (i=0) then //увеличиваем или уменьшаем кол-во чисел встроке b:=b+1 else b:=b-1; end else a:=a+1; if (b=m) and (i=0) then begin m:=m+1; //увеличиваем макс кол-во чисел для вывода i:=1; //для уменьшения("b") числа в строке end else if (b=0) and (i=1) then i:=0; //для увеличения("b") числа в строке end; readln(); end.vedro-compota
Sun, 12/04/2022 - 14:28
Permalink
1) a:=a+1; -- должно
1) a:=a+1; -- должно отрабатывать всегда, как и write (j,' ');
2)
-- надо использовать boolean, изначально = true (признак роста)
3) b -- изначально не должно быть нулем, мы ожидаем не ноль символов
4) По-идее все переключения значений и рассчет счетчиков можно поместить в ветку:
_____________
матфак вгу и остальная классика =)
NikSo
Wed, 12/14/2022 - 09:27
Permalink
Перенписал
program task23v3; var a, //кол-во символов которое вывелось в строке b, //кол-во символов которое нужно вывести в строке m, //считает максимальное кол-во символов n, //число которое вводит пользователь j: integer; //счетчик цикла i:boolean; //для определения увеличения или уменьшения строки begin writeln('vvedite chislo N'); readln(n); m:=2; b:=1; i:=true; for j:= 1 to n do begin a:=a+1; write (j,' '); if (a=b) then //увеличиваем или уменьшаем элементы begin writeln(); a:=0; if i then b:=b+1 else b:=b-1; end; if (b=m) then //увеличение максимального(вершины) кол-ва чисел в строке i:=false else if (b=1) then begin i:=true; m:=m+1; end; end; readln(); end.vedro-compota
Sun, 12/25/2022 - 13:11
Permalink
попробовать реализовать 4ый
попробовать реализовать 4ый пункт из предыдущего комментария
_____________
матфак вгу и остальная классика =)
NikSo
Mon, 01/02/2023 - 12:59
Permalink
Реализовал все в if (a=b) then
program task23v4; var a, //кол-во символов которое вывелось в строке b, //кол-во символов которое нужно вывести в строке m, //считает максимальное кол-во символов n, //число которое вводит пользователь j: integer; //счетчик цикла i:boolean; //для определения увеличения или уменьшения строки begin writeln('vvedite chislo N'); readln(n); m:=2; b:=1; i:=true; for j:= 1 to n do begin a:=a+1; write (j,' '); if (a=b) then //увеличиваем или уменьшаем элементы begin writeln(); a:=0; if (b=m) then //увеличение максимального(вершины) кол-ва чисел в строке i:=false else if (b=1) then begin i:=true; m:=m+1; end; if i then b:=b+1 else b:=b-1; end; end; readln(); end.vedro-compota
Mon, 01/02/2023 - 17:20
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)