Паскаль. Почему выводится верно, но при выводе всей длины массива, не выводится 11 индекс/элемент?

Т.е. выводятся 3 числа, первое и второе верно, они же есть в массиве, а вот третье число выводится, но его нет в самом массиве.
123456789101112131415161718
program test_2;
var x, y, i: integer;
a: array of integer;
begin
Randomize;
writeln('Введите число больше 0: ');
readln(x);
if x > 0 then
begin
y := x + 2;
SetLength(a, y);
for i := 0 to y - 1 do a[i] := Random(y);
a[Random(y)] := x;
writeln('Вывод: ', a[x - 1], ', ', a[x], ', ', a[x + 1]);
for i := 0 to x do
write(a[i], #32);
end else writeln('Неправильный ввод');
end.
По дате
По Рейтингу
Потому, что у тебя в массиве x + 2 элемента (y = x + 2). Но цикл от 0 до x (как сделано в твоём коде) выводит только x + 1 элемент. Чтобы вывелось всё, надо делать цикл не от 0 до x, а либо от 0 до x + 1, либо от 0 до y - 1.
Выше дан ответ.