Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda con dos matrices en c

Estas en el tema de ayuda con dos matrices en c en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 25/12/2010, 06:04
 
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.
  #2 (permalink)  
Antiguo 27/12/2010, 18:49
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: ayuda con dos matrices en c

fourpointone, en este lugar no se hacen tareas, solo se resuelven dudas o preguntas concretas.
plantea la duda que tengas.

Salu2!
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #3 (permalink)  
Antiguo 27/12/2010, 20:46
Avatar de ARICARRARO  
Fecha de Ingreso: diciembre-2010
Ubicación: México
Mensajes: 227
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: ayuda con dos matrices en c

Una sugerencia. Sin que te ofendas. Pero puedes mejor escribir tu algoritmo para que se te pueda ayudar.

No esperes a que hagan tu trabajo como lo menciono @mhax.
  #4 (permalink)  
Antiguo 28/12/2010, 13:47
Avatar de aandy  
Fecha de Ingreso: diciembre-2010
Ubicación: Piura
Mensajes: 18
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: ayuda con dos matrices en c

Hola a todos !!!

Bueno amigo tienen razon !! aqui no te ayudaremos con las tareas pero bueno te ayudare con el primer ejemplo !! aver si con mi ejemplo haces el siguiente ;)


Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void main(void)
  5. {
  6. /* DECLARACIÓN DE VARIABLES (realice tabla de objetos) */
  7. int M[9][9]=
  8. {{1,6,2, 8,5,7, 4,9,3},
  9. {5,3,4, 1,2,9, 6,7,8},
  10. {7,8,9, 6,4,3, 5,2,1},
  11. {4,7,5, 3,1,2, 9,8,6},
  12. {9,1,3, 5,8,6, 7,4,2},
  13. {6,2,8, 7,9,4, 1,3,5},
  14. {3,5,6, 4,7,8, 2,1,9},
  15. {2,4,1, 9,3,5, 8,6,7},
  16. {8,9,7, 2,6,1, 3,5,4}};
  17.  
  18. int i,j; /* Índices para la indexación de la matriz*/
  19. int res; /* vale 1 si es sudoku, 0 si no lo es*/
  20. /* ESCRITURA DE DATOS */
  21. for(i=0;i<9;i++) /* escritura de matriz */
  22. {
  23. printf("\n");
  24. for(j=0;j<9;j++)
  25. {
  26. printf("%d ",M[i][j]);
  27. }
  28. }
  29.  
  30.  
  31. printf("\nIntroduzca la fila: ");
  32. scanf("%d",&i);
  33. printf("Introduzca la columna: ");
  34. scanf("%d",&j);
  35. /* CÁLCULOS */
  36.  
  37.  
  38. /*************INICIO CÓDIGO DE ALUMNO*****************/
  39.     //creo esta variable para verificar
  40.     //si el numero se repite en la columna
  41.     // vale 1 si no se repite y 0 si repite
  42.     int repiteFila = 1; //si se repite vale 0
  43.     //al igual que la anterior pero para la comuna
  44.     int repiteColu = 1; //si se repite vale 0
  45.     //creo esta variable para contabilizar si el numero de
  46.     //repeticion del numero ingresado es solo 1
  47.     int contador = 0;
  48.     //numero indicado
  49.     int numero = M[i][j];
  50.     //para el for
  51.     int p;//creo la variable  que utilizare para el for !!
  52.    
  53.  
  54.  
  55.     /* Verificacion por Fila */
  56.     for(p = 0;p<9;p++){
  57.          if(M[i][p] == numero){
  58.             //verifico si coinciden los numeros
  59.             // y aumento en 1 al contador
  60.            contador+=1;
  61.         }
  62.  
  63.     }
  64.     if(contador > 1)  repiteFila = 0; //el numero solo debe estar una ves :)
  65.     /* fin de verificacion por Fila */
  66.     contador = 0; //vaceo el contador :)
  67.  
  68.  
  69.     /* Verificacion por Columna */
  70.     for(p=0;p<9;p++){
  71.          if(M[p][j] == numero){
  72.            //verifico si coinciden los numeros
  73.             // y aumento en 1 al contador
  74.            contador+=1;
  75.         }
  76.     }
  77.     if(contador > 1)  repiteColu = 0; //el numero solo debe estar una ves
  78.     /* Fin verificacion por columna*/
  79.  
  80.  
  81.  
  82.     if(numero > 0 && numero < 9){
  83.             if(repiteFila == 1 && repiteColu==1){
  84.                 res = 1;
  85.             }else {
  86.                 res = 0;
  87.             }
  88.     }else{
  89.         res = 0;
  90.     }
  91.  
  92. /***************FIN CÓDIGO DE ALUMNO******************/
  93.  
  94. /* ESCRITURA DE RESULTADOS */
  95. if(res==1)
  96. printf("\n El elemento M[%d,%d] cumple las condiciones",i,j);
  97. else
  98. printf("\n El elemento %d,%d no cumple las condiciones",i,j);
  99. /* BLOQUEO DE PANTALLA */
  100. printf("\n");
  101. system("pause");
  102.  
  103. }

Espero te sirva como referencia para el segundo ejercicio !!!
Salu2!!

Etiquetas: dos, matrices
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.