Задача 5 урок 13.2

Задача 5 урок 13.2

Предварительная справка: настоящие счеты выглядят как-то так (кости, с помощью которых отсчитывают число разрядов, нанизаны на спицы):

counter

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

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

Примеры:

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

---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
+++++++---+++
Пользователь вводит: 28
Получаем:
---++++++++++
---++++++++++
---++++++++++
---++++++++++
---++++++++++
++---++++++++
++++++++---++
Пользователь вводит: 1984
Получаем:
---++++++++++
---++++++++++
---++++++++++
+---+++++++++
+++++++++---+
++++++++---++
++++---++++++
Пользователь вводит: 2021
А наша программа отвечает:
---++++++++++
---++++++++++
---++++++++++
++---++++++++
---++++++++++
++---++++++++
+---+++++++++

Решение:

program counter;
var a,z,d,i,j,m,n : integer;
begin
  readln(a);                // пользователь вводит число
  d := 1000000;             // первоначальный делитель - буду сокращать его на десять - в цикле
  for j := 1 to 7 do
    begin
       n := 11;
       m := 1;
       z := a div d;       // находим 1 цифру числа А делителем
       a := a - d * z;     // уменьшаю число А на первую цифру
       d := d div 10;      // уменьшаю делитель
       while m <= z do
         begin
           write('+');
           m += 1;
         end;
      write('---');
      n := n - (z + 1);
      for i := 1 to n do
          write('+');
      writeln();
    end;
  readln();
end. 
vedro-compota's picture

решение засчитано

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