Pascal

ReMaTxEs

Buenas tards gente!! Tengo un ligerillo problema con pascal, tengo q declarar un procedimiento para rellenar un array bidimensional, el problema es que la dimension del array la elige el usiario (La paso como parámetro) Solo he consegido hacer esto, xo m casca el compilador xq evidementente no puede evaluar la expresion :S

Como hago para declarar un array, cuya dimension la elige el usuario???

procedure rellenar (a:integer);

var
n,i,j:integer;
cadena:array [1..a,1..a] of integer

begin

for i:= 1 to a do
for i:=j to a do
writeln ('Introduzca el valor para la posicion',i'x',j);
readln (n);
cuadrado [i,j] := n;

end;

Gracias de antemano :P

Z3RaTuL

Lo único que puedes hacer es declarar inicialmente un array bastante grande (por ejemplo de 100x100), y con el tamaño que te de el usuario, sólo usas una pequeña parte del array, la demás quedaría vacía. Porque que yo sepa, en pascal no hay arrays dinámicos.

Salu2.

D

en pascal no hay arrays dinámicos.... asi k pasaté a c++ o a delphi, k es clavaito a pascal...

kien t lo haya mandao no tne muxa idea...

j3j3

salu2

ReMaTxEs

M lo mandan en la facultad xDDD No m ked mas kojones q hacerlo en Pascal

#2 M lo podrias explicar un poko mas?? XDD

maRc

De Pascal no tengo ni idea, pero te lo explico como lo hago para C.

Lo que tienes que hacer es declarar un vector (matriz en tu caso), que sea muy grande, que el usuario no vaya a introducir una dimensión más grande que la que tu pones, por ejemplo, 1000x1000. Luego le pides al usuario que te introduzca la dimensión que el quiere, por ejemplo 10, y pones eso como tope en el bucle que rellena la matriz.

Si se pueden definir variables a mitad de programa, también puedes definir primero una variable para que almacene la dimensión que quiere el usuario, y luego declaras la matriz con esa dimensión. Esto en C se puede, en Pascal no lo se.

boqueron

facil facil(tu lo que quieres es crear una matriz no???
un vector de vectores vamos no?=??)

declarate un vector abiertooo
esto es un array of integer
explico:
linea=array of integer;
matriz=array of linea;

procedimiento rellenar(a,b:integer);
VAR
i,j:integer;
M:matriz;
for (i:=0 to (a-1)) do
for (j:=0 to (j-1)) do
M[j]:=0;(aki relleno la matriz de dimension declarada por el usuario llena de 0 ok???)
end;
end;
end rellenar;



te vale????

O

io no sé muxo d programacion ni de pascal pero lo mejor no seria crear registros, con 2 campos, uno con el dato a almacenar y otro con un puntero apuntando a otro registro, y así sucesivamente

no sé eh? :S

boqueron

que dicessssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss!!!!!!!!!!!!!!!

esto vamos a ver si quieres hacer eso pos te creas un registro con un campo matriz y otro con un campo punteroa registro para que sea dinamico pero vamos eso es lo q haces tu lo unico que implica es un uso exagerado de memeoria en el pc

ReMaTxEs

thx boqueron :D

De todos modos cmo si konozko la dimension maxima del array (10) Lo declaro de 10 y luego lo relleno de 1 hasta N (Elegido x el usiario) y tb lo leo de 1 a N :D

Gracias a todos :)

hayekot

Primero de carrera xD se nota komo a mi yo eso lo hice con constantes k le pides despues a ver mira

const dim=50;
type tdim=1..dim;
tmatriz=array[tdim,tdim] of integer;

procedure leermatriz(var m:tmatriz; filas,columnas:tdim);
var i,j:tdim;
begin
for i:=1 to filas do
for j:=1 to columnas do
begin
writeln('introduzca elemento ',i,',',j);
readln(m[i,j])
end;
writeln('MATRIZ RELLENA')
end;

Espero k te sea de algo de ayuda :D komo sabras kon el procedure te tendran k dar previamente los datos de entrada :D

Usuarios habituales