Pascal/Turbo Pascal - Comparar elementos de matrices

 
Vista:

Comparar elementos de matrices

Publicado por juanisank (5 intervenciones) el 04/06/2007 21:53:06
Hola que tal, les escribia para hacerles una pregunta. En mi facultad estamos hciendo un sudoku. A mi se me ocurrio que para que el programa me dijera si el valor que yo ingreso al tablero es correcto o no hice lo siguiente: defini una constante(array de 9x9), con el sudoku ya resuelto.Cree un procedimiento para que el valor que ingresa el usuario lo compare con el valor que esta en la misma posicion pero en la matriz constante.
hice en resumen masomenos esto:

if tablero[x,y]=matrizresuelta[x,y] then {tablero:valores que ingresa el usuario}
{matrizresuelta: Constante}
writeln('el valor es correcto');
else
writeln('el valor ingresado es incorrecto');
Bueno el problema es que este procedimiento anda bien solo cuando ingreso valores en la diagonal de mi matriz, osea X=Y, en los otros casos me dice siempre que el valor es incorrecto. ¿COMO HAGO PARA QUE RESOLVER ESTE PROBLEMA?.
Bueno espero haber sido claro, desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pon el código

Publicado por Pascual (94 intervenciones) el 09/06/2007 15:24:59
Pon el código tal vez te podamos ayudar.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comparar elementos de matrices

Publicado por Renato (1 intervención) el 14/06/2007 01:20:22
Hola... todo bien?
Sou renato universitario do segundo ano de computação aqui no Brasil e estou com problema neste programa para comparar elemento da matriz na horizontal, vertical e diagonal.
poderia me ajudar???
Grato...


program project;

type

matriz = array[1..100,1..100] of integer;

achei = record
orientacao : string;
linha : integer;
coluna : integer;
end;

var
v, v_verso : array [1..10] of integer;
v_achei: array [1..100] of achei;
mat : matriz;
n,m,l,c,x,i,k,contador : integer;


Function proc_horizontal(mt:matriz;p:array of integer; m,n,l,c,qtd:integer):boolean;
var i:integer;
begin
if ( ( c + qtd - 1 ) <= n ) then
begin
proc_horizontal := true;
for i:=c to c + qtd - 1 do
if mt[l,i] <> p[i-c] then
proc_horizontal := false;
end;
end;

Function proc_vertical(mt:matriz;p:array of integer; m,n,l,c,qtd:integer):boolean;
var i:integer;
begin
if ( ( l - qtd + 1 ) <= m ) then
begin
proc_vertical := true;
for i := l to l + qtd - 1 do
if mt[i,c] <> p[l-i] then
proc_vertical := false;
end;
end;

begin
contador := 1;
writeln('digite a qtade de linhas');
readln(m);
writeln('digite a qtade de colunas');
readln(n);

for l:=1 to m do
for c:=1 to n do
readln(mat[l,c]);

//qtidade a ser procurada
writeln('digite a sequencia a ser procurada');
readln(k);

for i:=1 to k do
readln(v[i]);

for i:=1 to k do
v_verso[k - i + 1]:= v[i];

//procurar a ordem
for l:=1 to m do
begin
for c:=1 to n do
begin

if proc_horizontal(mat,v,m,n,l,c,k) then
begin
for x:= 1 to k do
begin
v_achei[contador].orientacao := 'horizontal frente';
v_achei[contador].linha := l;
v_achei[contador].coluna := c + x - 1;
contador := contador + 1;
end;
end;
if proc_horizontal(mat,v_verso,m,n,l,c,k) then
begin
for x:= 1 to k do
begin
v_achei[contador].orientacao := 'horizontal atras';
v_achei[contador].linha := l;
v_achei[contador].coluna := c + x - 1;
contador := contador + 1;
end;
end;
end;

// vertical
if proc_vertical(mat,v,m,n,l,c,k) then
begin
for x:= 1 to k do
begin
v_achei[contador].orientacao := 'vertical frente';
v_achei[contador].linha := l + x - 1;
v_achei[contador].coluna := c;
contador := contador + 1;
end;
end;
if proc_vertical(mat,v_verso,m,n,l,c,k) then
begin
for x:= 1 to k do
begin
v_achei[contador].orientacao := 'vertical atras';
v_achei[contador].linha := l + x - 1;
v_achei[contador].coluna := c;
contador := contador + 1;
end;
end;

end;

// exibir matriz
for l:=1 to m do
begin
for c:=1 to n do
begin
write(' ',mat[l,c]);
for i:=1 to 100 do
if (v_achei[i].linha = l) and (v_achei[i].coluna = c) then
write('*');
end;
writeln;
end;
readln;

end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar