Задачи 13.2

Задачи 13.2:

1) Составьте программу, которая выводит на экран прямоугольный флаг N×M вида (используйте циклы repeat):
- - - - - -
- - - - - -
- - - - - -
- - - - - -

var n, m, i, j : integer;
begin
  n := 4; //кол-во строк
  m := 6; //кол-во символов
  i := 1; //начальное знач-е счетчика строк
  repeat
    j := 1; //начальное знач-е счетчика символов 
    repeat
      write('- ');
      j := j + 1;
    until j > m;
    writeln();
    i := i + 1;
  until i > n;
end.
2) Составьте программу, которая выводит на экран прямоугольный флаг N×M вида (c чередованием плюсов и минусов в строках, используйте циклы while):
- - - - - -
+ + + + + +
- - - - - -
+ + + + + +
- - - - - -
var n, m, i, j : integer;
begin
  n := 5; //кол-во строк
  m := 6; //кол-во символов в строке
  i := 1; //начальное знач-е счетчика строк
  while i <= n do
  begin
    j := 1; // начальное значение счётчика символов
    if i mod 2 = 1 then
    begin
      while j <= m do
      begin
        write('- ');
        j := j + 1;
      end;
    end
    else
    begin
      while j <= m do
      begin
        write('+ ');
        j := j + 1;
      end;
    end;
    writeln();
    i := i + 1;
  end;
end.
3) Составьте программу, которая выводит на экран прямоугольный флаг N×M вида (с рамкой по краям):
+ + + + + +
+ - - - - +
+ - - - - +
+ + + + + +
var n, m, i, j : integer;
begin
  n := 5; //кол-во строк
  m := 6; //кол-во символов в строке
  i := 1; //начальное знач-е счетчика строк
  while i <= n do
  begin
    j := 1; // начальное значение счётчика символов
    while j <= m do
    begin
      if (i = 1) or (i = n) or (j = 1) or (j = m) then
        write('+ ')
      else
        write('- ');
      j := j + 1;
    end;
    writeln();
    i := i + 1;
  end;
end.
4) Подготовительная задача для "счет"
Пользователь вводит число от 1 до 9, вывести его в представлении как счетах со сдвинутыми костями (всего десять костей на спице), например:

если ноль, то все кости справа:
---++++++++++

если три, то значащая часть слева, а все остальное справа:
+++---+++++++

если девять:
+++++++++---+

var n, i : integer;
begin
  writeln('введите число от 0 до 9');
  readln(n);
  
  for i := 1 to 10 do
  begin
    if i <= n then
      write('+')
    else if i <= n + 3 then
      write('-')
    else
      write('+');
  end;
  writeln();
end.
5) В некоем виртуальном пространстве есть виртуальные, опять же, ASCII-счеты, с 7-ю спицами по 10 костяшек на каждой, в сброшенном состоянии (условный ноль) они выглядят так:
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
Задание: визуализируйте на счетах введенное пользователем число.

Примеры:
1)Пользователь вводит: 7
Получаем:
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
+++++++---+++

2)Пользователь вводит: 28
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
++---++++++++
++++++++---++

3)Пользователь вводит: 1984
---++++++++++
---++++++++++
---++++++++++
+---+++++++++
+++++++++---+
++++++++---++
++++---++++++

4)Пользователь вводит: 2021
---++++++++++
---++++++++++
---++++++++++
++---++++++++
---++++++++++
++---++++++++
+---+++++++++

var n, i, d, j, t : integer;
begin
  writeln('введите число');
  readln(n); 
  
  for i := 7 downto 1 do 
    begin
      t := n; //исходное число 
      for j := 1 to i - 1 do
        t := t div 10; 
      d := t mod 10; 

      if d > 0 then
        begin
          for j := 1 to 10 do
            begin
              if j <= d then
                write('+') 
              else if j <= d + 3 then
                write('-') 
              else
                write('+'); 
            end;
        end
      else
        writeln('---++++++++++'); 
      writeln(); 
    end;
end.