Алгоритмическая задача №2 .Виртуальные счеты

Алгоритмическая задача №2 -- и она же в уроке 13.2 под номером 4.

В некоем виртуальном пространстве есть виртуальные, опять же, ASCII-счеты, с 7-ю спицами по 10 костяшек на каждой, в сброшенном состоянии (условный ноль) они выглядят так:


---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++

Задание: визуализируйте на счетах введенное пользователем число.Примеры:

Пользователь вводит: 7
Получаем:

---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
+++++++---+++

Пользователь вводит: 28
Получаем:

---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
++---++++++++
++++++++---++

Пользователь вводит: 1984
Получаем:

---++++++++++
---++++++++++
---++++++++++
+---+++++++++
+++++++++---+
++++++++---++
++++---++++++
program abacus;
type arr = array [1..10] of integer;
var s: string;
    ls : arr;
    i,j,count,row,number,k : integer;

begin // основная программа
  s:= '---++++++++++';
  i:= 1;
  row:= 7; // кол-во строк
  count:= 0; // кол-во цифр в числе
  readln(number); // считываем число

  { разбиваем число на цифры }
  while(0 < number) do
  begin
    ls[i]:= number mod 10;
    i += 1;
    number := number div 10;
    count += 1; // кол-во цифр 
  end;
  { выводим результат }
  for j:= 1 to row do
  begin
     if(j < row - count) then
        writeln(s) // выводим неизменненую строку
     else
     begin
       k:= 0;
       while(k < length(s)) do // обходим строку
       begin
          if(k < ls[count]) then // индекс массива считаем с последнего элемента
             write('+')
          else
          begin
            if(k >= ls[count]) and (k < 3 + ls[count]) then
                    write('-')
                else
                    write('+');
          end;
          k += 1; // увеличиваем индекс строки
       end;
       count -= 1; // уменьшаем индекс массива
       writeln(); // перенос строки
     end;
  end;

end. // завершение основной программы 

Key Words for FKN + antitotal forum (CS VSU):