[ Foro de Pascal ]
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.
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.)