[ Foro de Pascal ]
buenas, estoy estudiando materias de programación para poder hacer un postgrado, pero soy de otra disciplina, por lo que algunas lógicas me complican un poco...
tengo que programar una función que me devuelva true si un tablero (matriz construida con un array de array) no tiene cero en sus elementos. Digamos que la funcion en un array es sencilla, pero al pasarla a una matriz no estoy logrando que suceda nada...
creo que el problema esta en el for que utilizo para recorrer las filas pero no me doy cuenta como solucionarlo.
esto es lo que escribi hasta ahora, gracias desde ya
program p2018;
const
MAXTablero=4;
MAXValor=2048;
valortab=2;
type
RangoIndice= 1 .. MAXTablero;
TipoValor = 0 .. MAXValor;
TipoFila = array [RangoIndice] of TipoValor;
TipoTablero = array [RangoIndice] of TipoFila;
var
tablero: TipoTablero;
{procedimiento para iniciar el tablero}
procedure IniciarTablero(var tablero: TipoTablero);
var i,j,cont:integer;
begin
cont:=1;
for i:=1 to MAXTablero do
begin
for j:=1 to MAXTablero do
begin
tablero[i,j]:=cont;
cont:=cont+1;
end;
tablero[1,1]:=0;
end;
end;
{procedimiento mostrar tablero}
procedure MostrarTablero(tablero: TipoTablero);
var i,j:integer;
begin
for i:=1 to MAXTablero do begin
for j:=1 to MAXTablero do
write (tablero[i,j],' ');
writeln;
end;
end;
function TieneCeros(tablero:TipoTablero): boolean;
var i,j:integer;
begin
j:=1
for i:=1 to MAXTablero do begin
while (j<=MAXTablero) and (tablero[i,j]<>0) do
j:=i+1;
end;
TieneCeros:=j<=MAXTablero;
end;
begin
IniciarTablero (tablero);
MostrarTablero (tablero);
if TieneCeros(tablero) then
begin
writeLn ('el tablero tiene al menos un cero');
end
else
writeLn ('el tablero no tiene ningun cero')
end.
Tienes la función "TieneCeros" resuelta en otro hilo muy reciente del foro. Podría ser así:
function TieneCeros(tablero:TipoTablero): boolean;
var i,j:integer;
exito: boolean;
begin
exito:=false;
for i:=1 to MAXTablero do
for j:=1 to MAXTablero do
if (tablero[i,j]=0) then
exito:=true
TieneCeros:=exito;
end;
Aunque se podría mejorar para que dejase de buscar en cuanto encontrase un cero, pero esa lógica debe resultarte fácil de seguir tal cual.
(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.)