Ваши индексы отключены на 1. Ваш tablaDeMultiplicar
объявлен как:
TMatriz = array[1..10,1..10] of Integer;
Имеет индексы [1..10, 1..10]
Но вы получаете к нему доступ с индексами 0..9 и0..9:
for i := 1 to 10 do
begin
for j := 1 to 10 do
begin
tablaDeMultiplicar[i-1,j-1] := i*j; // i-1 and j-1 are 0..9 each
Измените это на:
tablaDeMultiplicar[i,j] := i*j;
И измените также свой второй набор циклов.В целом:
{$R+}{$Q+}
type
TMatriz = array[1..10, 1..10] of Integer;
var
i, j: Integer;
tablaDeMultiplicar: TMatriz;
begin
for i := 1 to 10 do
begin
for j := 1 to 10 do
begin
tablaDeMultiplicar[i, j] := i * j;
end;
end;
for i := 1 to 10 do
begin
for j := 1 to 10 do
begin
Write(tablaDeMultiplicar[i, j]:6);
end;
Writeln;
end;
Readln;
end.
Примечание: нет 1..11
или for 0 to 10 do
в любом месте.1
и 10
все время, потому что именно так вы объявили TMatriz
.
, который компилируется и работает так, как ожидалось:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Иприслушайтесь к этому совету @LURD: Активируйте проверку диапазона и переполнения на этапе разработки.Это быстро обнаружит ошибки такого рода .
Кроме того, если у вас есть такие проблемы, попробуйте для отладки вашего кода.Это проще, чем вы думаете.