uses crt;
{
  Program pentru învățarea tăbliței înmulțirii.

  Versiunea 2:
    https://duzun.me/games/inmultire
}
const t = 8;
var o: record
          n, m: byte;
          v: array[2..t + 1, 2..t + 1] of record
              f: boolean;
              x, y: byte;
             end;
          g: boolean;
       end;
    c: integer;
    op, i, j: byte;

procedure scr(x, y: byte);
var px, py: byte;
begin
  px := (x - 2) * 9 + 2;
  py := ((y - 1) * 2) - (px - 2) div 8;
  gotoxy(px, py);
  write(x, '*', y, '=');
end;

begin
  textmode(3);
  textattr := $17;
  clrscr;

  for i := 2 to t + 1 do
    for j := 2 to t + 1 do
      o.v[i, j].f := true;

  op := 0;
  randomize;
  repeat
    inc(op);
    with o do begin
      repeat
        n := random(t) + 2;
        m := random(t - n + 2) + n;
      until (v[n, m].f) or (op>=37);

      v[n, m].f := false;
      scr(n, m);
      readln(c);

      { c := n * m; write(c); }
      if c<>n * m then begin
        scr(n, m);
        write('XX');
      end;

    end;
  until op=36;

  readkey;
end.
