print4. Калькулятор

Простая "техническая" задача. Возможно решение с использованием case и одновременным формированием 3 строк. Использование подпрограммы существенно упрощает программу, так как для всех трех выводимых строк должны быть выполнены одни и те же действия.
var s:string;
procedure display(const s,v:string);
var i,k:integer;
begin
  for i:=1 to length(s) do
  begin
    if s[i]='-' then k:=1
    else k:=(ord(s[i])-ord('0'))*3+4;
    if (k>0) and (k<length(v)) then
      write(copy(v,k,3));
  end;
  writeln;
end;
begin
  readln(s);
  display(s,'    _     _  _     _  _  _  _  _ ');
  display(s,' _ | |  | _| _||_||_ |_   ||_||_|');
  display(s,'   |_|  ||_  _|  | _||_|  ||_| _|');
end.
loading