Урок 13.1 Задача 19

Урок 13.1 Задача 19

Пользователь передает целое положительное число N, выведете на экран последовательность из единиц в количестве N "ёлочкой", например для N=18:
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
1 1 1
ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно).
Решите указанными двумя способами.

Решение:

var a,c,n: integer;
begin
  writeln('Введите число');
  readln(n);
  a:=0;
  c:=1;
  while (a<=n) do
  begin
    a:=1;
      if (a <=n) then
        write(a,' ');
      if (a = (c + 1)) then
      begin
        writeln();

      end;
  end;

  readln();

end.                
vedro-compota's picture

1)

 a:=0;
  c:=1;
  while (a<=n) do
  begin
    a:=1;

-- почему а меняет значение с нуля на 1? Почему бы не присвоить значение еще до цикла

2)


 while (a<=n) do
  begin
    a:=1;
      if (a <=n) then

-- дублирование проверки, зачем дважды проверять что а меньше либо равно n

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Решите задачу

вывести на экран N единиц в строчку, напр. для N = 5:
1 1 1 1 1

-- решить циклом while

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

попытаться переписать циклом for

_____________
матфак вгу и остальная классика =)

program Project1;
var a,c,n: integer;
begin
  writeln('Введите число');
  readln(n);
  c:=1;
  for a:=1 to n do
      if (a <=n) then
        write(a,' ');
      if (a = (c + 1)) then
        writeln();
  readln();

end.    
vedro-compota's picture

1) прокомментировать назначение переменных
2) и назначение проверок if()

_____________
матфак вгу и остальная классика =)

переменные:
a-количество едениц в строке
c-количество строк
n-количество едениц при выводе елочкой
if:
№1-сравнивает кол-во едениц в строке и введенное число
№2-сравнивает кол-во едениц и строки

vedro-compota's picture

вынести продолжение решения отдельно как для задачи #1 урока по for, с учетом замечаний:

1) добавить комментарии прямо в код:

program Project1;
var a, // что-то там
c, // что-то там
n // что-то там
: integer;

текущую пока на паузу до решения

_____________
матфак вгу и остальная классика =)

program Project1;
var a,c,n: integer;// a-количество едениц в строке
begin
  writeln('Введите число');
  readln(n); //n-количество едениц при выводе елочкой                                                   
  c:=1;//c-количество строк
  for a:=1 to n do
      if (a <=n) then// сравнивает кол-во едениц в строке и введенное число
        write(a,' ');
      if (a = (c + 1)) then//сравнивает кол-во едениц и строки
        writeln();
  readln();
 
end.