Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/12/2010, 06:04
fourpointone
 
Fecha de Ingreso: diciembre-2010
Mensajes: 2
Antigüedad: 13 años, 4 meses
Puntos: 0
ayuda con dos matrices en c

hola si alguien me puede ayudar a resolver estos dos problemas

Una matriz 9x9 es un sudoku si se cumplen las siguientes condiciones:
a) Ningún valor se repite en la misma fila.
b) Ningún valor se repite en la misma columna.
c) Ningún valor se repite dentro de cada submatriz 3x3 del sudoku (9 submatrices).
d) Todos los elementos de la matriz están comprendidos entre 1 y 9.
Realice un programa que compruebe que que el elemento M[i][j] de una matriz 9x9 dada no está
repetido en su fila o en su columna y que está entre el 1 y el 9.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void main(void)
{
/* DECLARACIÓN DE VARIABLES (realice tabla de objetos) */
int M[9][9]=
/* 0 3 6 */
/*0*/{{1,6,2, 8,5,7, 4,9,3},
{5,3,4, 1,2,9, 6,7,8},
{7,8,9, 6,4,3, 5,2,1},
/*3*/ {4,7,5, 3,1,2, 9,8,6},
{9,1,3, 5,8,6, 7,4,2},
{6,2,8, 7,9,4, 1,3,5},
/*6*/ {3,5,6, 4,7,8, 2,1,9},
{2,4,1, 9,3,5, 8,6,7},
{8,9,7, 2,6,1, 3,5,4}};
int i,j; /* Índices para la indexación de la matriz*/
int res; /* vale 1 si es sudoku, 0 si no lo es*/
int I,J;
/* ESCRITURA DE DATOS */
for(i=0;i<9;i++) /* escritura de matriz */
{
printf("\n");
for(j=0;j<9;j++)
{
printf("%d ",M[i][j]);
}
}
printf("\nIntroduzca la fila: ");
scanf("%d",&i);
printf("Introduzca la columna: ");
scanf("%d",&j);
/* CÁLCULOS */
/*************INICIO CÓDIGO *****************/




/***************FIN CÓDIGO ******************/
3
/* ESCRITURA DE RESULTADOS */
if(res==1)
printf("\n El elemento %d,%d cumple las condiciones",i,j);
else
printf("\n El elemento %d,%d no cumple las condiciones",i,j);
/* BLOQUEO DE PANTALLA*/
printf("\n");
system("pause");
}
Nota: La matriz se inicializa a una matriz Sudoku. Para comprobar si el algoritmo funciona, se pueden
modificar los valores de inicialización para que algún elemento no cumpla las condiciones.
.
.
.
.
.
y
.
.
.
.
.
Apartado 2
Una matriz 9x9 es un sudoku si se cumplen las siguientes condiciones:
e) Ningún valor se repite en la misma fila.
f) Ningún valor se repite en la misma columna.
g) Ningún valor se repite dentro de cada submatriz 3x3 del sudoku (9 submatrices).
h) Todos los elementos de la matriz están comprendidos entre 1 y 9.
Realice un programa que compruebe que que el elemento M[i][j] de una matriz 9x9 dada no está
repetido en su correspondiente submatriz y que está entre el 1 y el 9.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void main(void)
{
/* DECLARACIÓN DE VARIABLES (realice tabla de objetos) */
int M[9][9]=
/* 0 3 6 */
/*0*/{{1,6,2, 8,5,7, 4,9,3},
{5,3,4, 1,2,9, 6,7,8},
{7,8,9, 6,4,3, 5,2,1},
/*3*/ {4,7,5, 3,1,2, 9,8,6},
{9,1,3, 5,8,6, 7,4,2},
{6,2,8, 7,9,4, 1,3,5},
/*6*/ {3,5,6, 4,7,8, 2,1,9},
{2,4,1, 9,3,5, 8,6,7},
{8,9,7, 2,6,1, 3,5,4}};
int i,j; /* Índices para la indexación de la matriz*/
int res; /* vale 1 si es sudoku, 0 si no lo es*/
int I,J;
/* ESCRITURA DE DATOS */
for(i=0;i<9;i++) /* escritura de matriz */
{
printf("\n");
for(j=0;j<9;j++)
{
printf("%d ",M[i][j]);
}
}
printf("\nIntroduzca la fila: ");
scanf("%d",&i);
printf("Introduzca la columna: ");
scanf("%d",&j);
/* CÁLCULOS */
/*************INICIO CÓDIGO*****************/



/***************FIN CÓDIGO******************/
/* ESCRITURA DE RESULTADOS */
if(res==1)
5
printf("\n El elemento %d,%d cumple las condiciones",i,j);
else
printf("\n El elemento %d,%d no cumple las condiciones",i,j);
/* BLOQUEO DE PANTALLA*/
printf("\n");
system("pause");
}
Nota: La matriz se inicializa a una matriz Sudoku. Para comprobar si el algoritmo funciona, se pueden
modificar los valores de inicialización para que algún elemento no cumpla las condiciones.