Помогите с маленьким воросом на паскале

uses crt;

var
  i, n, x, y, g: integer;


procedure f;
begin
  Delay(100);
  if i > 9 then i := 0;
  TextColor(i+1);
  gotoxy(X * 2, y);
  write(i);
  inc(i);
end;


begin
  read(n);
  clrscr; 
  y := 1;
    for x := 1 to n do f; 
    inc(y);
    for x := x downto 1 do f;
    inc(y);
  readln;
  readln;
end.

Объясните как вывести до n-нного Y эти строки?


Ответы (2 шт):

Автор решения: rotabor

Вложенные циклы

y := 0;
for z := 1 to n/2 do
begin
  for x := 1 to n do f; 
  inc(y);
  for x := x downto 1 do f;
  inc(y);
end;

Или так

y := 0;
while y <= n do
begin
  for x := 1 to n do f; 
  inc(y);
  for x := x downto 1 do f;
  inc(y);
end;
→ Ссылка
Автор решения: Arik

Похоже, изначальная путаница с переменными, и код должен быть +/- таким:

uses crt;

procedure f(x: integer; var i: integer);
begin
  Delay(100);
  if i > 9 then i := 0;
  TextColor(i+1);
  gotoxy(x * 2, i);
  write(i);
  inc(i);
end;

var
  n, x, y: integer;

begin
  read(n);
  clrscr; 
  y := 1;
  for x := 1 to n do f(x, y); 
  WriteLn();
  for x := x downto 1 do f(x, y);
  readln;
  readln;
end.
→ Ссылка