[ Foro de Pascal ]

matrices !!con urgencia!!

13-Dec-2020 12:22
Invitado (Alejandro)
6 Respuestas

Hola a todos
Estoy haciendo un trabajo para la universidad pero no puedo hacerlo funcionar.
Ocupo una matriz simple, de una solo fila. Quiero leer uno de los números de la matriz, pero cuando le doy a correr el programa me sale "index out of the bonds of the array"
No se muy bien a que se refiere y no se en donde esta el problema
por favor necesito ayuda


13-Dec-2020 15:23
Nacho Cabanes (+84)

El mensaje error es claro: estás mirando más allá de los límites de la matriz.

Por ejemplo si es una matriz declarada como 1..5, estás mirando la posición 0 o la 6


13-Dec-2020 16:19
Invitado (Alejandro)

Ahi esta el problema, aun no ingreso ningun valor como para que me pase de los limites

Esta es la parte del programa en la que falla

case b of
       1:
       begin
       p:=c*3;
               for var i:=1 to 15 do
       begin
         X[i]:=i;
         write(X[i],' ');
       end
       readln(X[i]);  !!me marca el problema en esta linea!!


13-Dec-2020 17:15
Luis Torres (+18)

Si has declarado una matriz:
var arreglo: array[1..10] of integer;
debes asegurarte que el recorrido de los índices esté comprendido entre 1 y 10 incluyéndolos, seguramente estás leyendo o escribiendo en un arreglo[0] y en un arreglo[11], zonas de memoria que no está reservadas en la declaración del array y por por eso te genera el error.

Saludos.


13-Dec-2020 17:38
Alejandro Aguilar

Gracias por responder, pero mi problema es cuando quiero seleccionar un dato de la matriz
por ejemplo en este estilo: readln(X[i]);

Por alguna razon no me deja


13-Dec-2020 18:29
Nacho Cabanes (+84)

Insisto: porque "i" está más allá de los límites de la matriz.

Si haces "for var i:=1 to 15 do" y tu matriz tiene taño 14 o menos, fallará. Además, en ese fuente estás haciendo un "readln" fuera del "for" (¿por qué?), así que quizá estés guardando en la posición 16, si ya ha terminado el bucle que va de 1 a 15.


19-Jan-2021 03:36
Invitado (Francisco)

A mi parecer hay un error en esa línea
for var i:=1 to 15 do
esto porque var es una de las palabras reservadas por el compilador.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)