Top.Mail.Ru
Ответы

Паскаль. Почему выводится верно, но при выводе всей длины массива, не выводится 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.

Аватар пользователя
Ученик

Выше дан ответ.