[ Foro de Pascal ]

Como trabajar una matriz?

18-Oct-2014 18:52
Invitado (Orlando)
1 Respuestas

Buenas, antes que nada gracias de antemano.

Tengo una duda respecto a el uso de filas en una matriz. Se me da una matriz cuadrada llena de numeros, va a haber un enumerado que me va a decir que proceso va a actuar; proceso que reciben una fila y realizan una operacion (lo llamaremos MOVER)
.
Lo que quiero lograr es que al aplicar ese proceso actue sobre todas las filas. Bien, el problema que tengo es que el tablero es un array de arrays, y no puedo pasar las filas direcatmente a el proceso porque como mencione anteriormente MOVER recibe una fila. Estaba pensando alguna manera de pasarle el valor de cada fila del tablero en el lugar X a otra fila.

No esta muy bien redactado porque es dificil de explicar, asi que disculpen. Dejo el codigo para que se pueda entender mejor y un pequeño esquema de como seria.

 
const
maximo=4;
ValorMax = 1000;
 
Rango = 1 .. Maximo;
TValor = 0 .. ValoMaxr; 
TFila = array [Rango] of TValor;
TTablero = array [Rango] of TFila;
Direccion = (arriba,abajo,derecha,izquierda);
 
procedure MoverTablero(var tablero:TTablero);
 
var i: integer;
var j: integer;
var fila : TipoFila;
var columna:TipoFila;
 
begin
for i:=1 to Maximo do
begin
for j:=1 to Maximo do
begin
columna[i]:=tablero[i,1];
fila[j]:= tablero[1,j];
Mover(fila);
Mover(columna);
end;
end;
 


Seria asi:

|1 1 1 1|
|1 1 1 1|
|1 1 1 1|
|1 1 1 1|

Supongamos que la funcion Mover suma todos y los deja en el primer lugar, quedaria asi:

|4 0 0 0|
|4 0 0 0|
|4 0 0 0|
|4 0 0 0|

Ese codigo que deje arriba no hace nada, queda igual a la primera.


21-Oct-2014 15:49
Nacho Cabanes (+30)

No, no puede asignar toda una fila de golpe.

Tienes que recorrerla con un "for", de modo que cada elemento "i" de la fila de origen se suma/mueva/lo que necesites a la fila de destino.






(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.)