elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Busqueda de valores con matrices
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Busqueda de valores con matrices  (Leído 2,542 veces)
Gaby_10

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Busqueda de valores con matrices
« en: 15 Febrero 2014, 06:29 am »

Bueno mi duda es la siguiente tengo una matriz de 9 x 9, llena de numeros aleatorios lo que no sé, es como hacer buscar tanto horizontal como vertical los valores que se repiten y cambiar los valores repetidos con valores aleatorios tomando como referencia tres valores repetidos. el programa es en dev c++


#include <stdio.h>
#define MAXFIL 9
#define MAXCOL 9


void buscarVerti(int matriz[MAXFIL][MAXCOL],int *puntos){
   int contador=1;
   int i,j;
   for (j=0;j<MAXCOL;j++){
      for (i=0;i<7;i++){
              if (matriz [i ][j]==matriz[i+1][j]){
                 contador++;      
              }
      
            else if (matriz [j] !=matriz[i+1][j]){
                  contador=1;
            }
            
            if (contador==3 && i<7 && (matriz[i+1][j]==matriz[i+2][j])){
               printf("\n\n ENCONTRO 4 CARAMELOS EN LA COLUMNA: %d  DESDE LA FILA %d A LA FILA %d \n",j+1,i,i+3);
               puntosN1=puntosN1+7;
               matriz [i ][j]=1+(rand()%5);
                  matriz[i+1][j]=1+(rand()%5);
                  matriz[i+2][j]=1+(rand()%5);
                  matriz[i+3][j]=1+(rand()%5);
               break;
              }
              
              else if (contador==3 && i<8 && (matriz[j]==matriz[i+1][j]) ){
                   printf("\n\n ENCONTRO 3 CARAMELOS EN LA COLUMNA: %d  DESDE LA FILA %d A LA FILA %d \n",j+1,i,i+2);
                   puntosN1=puntosN1+5;
                   matriz[ i] [j]=1+(rand()%5);
                  matriz[i+1][j]=1+(rand()%5);
                  matriz[i+2][j]=1+(rand()%5);
               break;
            }   
              
             
      }
   }
}


void buscarHori(int matriz[MAXFIL][MAXCOL],int *puntos){
int contador=1;
   int i,j;
   for(i=0;i<MAXFIL;i++){
      for(j=0;j<7;j++){
         if (matriz[j]== matriz[j+1])
            contador=contador+1;
            puntosN1=puntosN1;

         if (matriz[j]!=matriz[j+1])
            contador=1;
            puntosN1=puntosN1;
            
            if (contador==3 && j<7 && (matriz[j+1]==matriz[j+2])){
               printf("\n\n ENCONTRO 4 CARAMELOS DESDE LA COLUMNA: %d  HASTA LA COLUMNA %d EN LA FILA %d \n",j,j+3,i+1);
               matriz[j]=1+(rand()%5);
               matriz[j+1]=1+(rand()%5);
               matriz[j+2]=1+(rand()%5);
               matriz[j+3]=1+(rand()%5);
                puntosN1=puntosN1+7;
            break;
            }
            
            if (contador==3 && j<8 && (matriz[j]==matriz[j+1])){
               printf("\n\n ENCONTRO 3 CARAMELOS DESDE LA COLUMNA: %d  HASTA LA COLUMNA %d EN LA FILA %d \n",j,j+2,i+1);
                puntosN1=puntosN1+5;
            matriz[j]=1+(rand()%5);
               matriz[j+1]=1+(rand()%5);
               matriz[j+2]=1+(rand()%5);
            break;
            }
      }
   }
}




int main(){
int i,j;
int *puntos=0;
int matriz[MAXFIL][MAXCOL];
for (i=0;i<MAXFIL;i++){
     for(j=0;j<MAXCOL;j++){
          matriz[j]=1+rand()%5
           printf("%i",matriz[j]);
      }
printf("\n");
}
buscarCaramelosVertical (matriz,puntosN1);
buscarCaramelosHorizontal (matriz,puntosN1);
printf("Ud tiene %i puntos",puntosN1);
}


« Última modificación: 15 Febrero 2014, 06:42 am por Gaby_10 » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Busqueda de valores con matrices
« Respuesta #1 en: 15 Febrero 2014, 15:17 pm »

Antes que nada cuando postees código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.
 Este es tu código con etiquetas:


Código
  1. #include <stdio.h>
  2. #define MAXFIL 9
  3. #define MAXCOL 9
  4.  
  5.  
  6. void buscarVerti(int matriz[MAXFIL][MAXCOL],int *puntos){
  7. int contador=1;
  8. int i,j;
  9. for (j=0;j<MAXCOL;j++){
  10. for (i=0;i<7;i++){
  11.        if (matriz [i ][j]==matriz[i+1][j]){
  12.         contador++;
  13.        }
  14.  
  15. else if (matriz [i][j] !=matriz[i+1][j]){
  16. contador=1;
  17. }
  18.  
  19. if (contador==3 && i<7 && (matriz[i+1][j]==matriz[i+2][j])){
  20. printf("\n\n ENCONTRO 4 CARAMELOS EN LA COLUMNA: %d  DESDE LA FILA %d A LA FILA %d \n",j+1,i,i+3);
  21. puntosN1=puntosN1+7;
  22. matriz [i ][j]=1+(rand()%5);
  23.             matriz[i+1][j]=1+(rand()%5);
  24.             matriz[i+2][j]=1+(rand()%5);
  25.             matriz[i+3][j]=1+(rand()%5);
  26. break;
  27.        }
  28.  
  29.        else if (contador==3 && i<8 && (matriz[i][j]==matriz[i+1][j]) ){
  30.                 printf("\n\n ENCONTRO 3 CARAMELOS EN LA COLUMNA: %d  DESDE LA FILA %d A LA FILA %d \n",j+1,i,i+2);
  31.                 puntosN1=puntosN1+5;
  32.                 matriz[ i] [j]=1+(rand()%5);
  33.             matriz[i+1][j]=1+(rand()%5);
  34.             matriz[i+2][j]=1+(rand()%5);
  35. break;
  36. }
  37.  
  38.  
  39. }
  40. }
  41. }
  42.  
  43.  
  44. void buscarHori(int matriz[MAXFIL][MAXCOL],int *puntos){
  45. int contador=1;
  46. int i,j;
  47. for(i=0;i<MAXFIL;i++){
  48. for(j=0;j<7;j++){
  49. if (matriz[i][j]== matriz[i][j+1])
  50.            contador=contador+1;
  51.            puntosN1=puntosN1;
  52.  
  53. if (matriz[i][j]!=matriz[i][j+1])
  54.            contador=1;
  55.            puntosN1=puntosN1;
  56.  
  57.            if (contador==3 && j<7 && (matriz[i][j+1]==matriz[i][j+2])){
  58.             printf("\n\n ENCONTRO 4 CARAMELOS DESDE LA COLUMNA: %d  HASTA LA COLUMNA %d EN LA FILA %d \n",j,j+3,i+1);
  59.             matriz[i][j]=1+(rand()%5);
  60.             matriz[i][j+1]=1+(rand()%5);
  61.             matriz[i][j+2]=1+(rand()%5);
  62.             matriz[i][j+3]=1+(rand()%5);
  63.                puntosN1=puntosN1+7;
  64. break;
  65.            }
  66.  
  67.            if (contador==3 && j<8 && (matriz[i][j]==matriz[i][j+1])){
  68.             printf("\n\n ENCONTRO 3 CARAMELOS DESDE LA COLUMNA: %d  HASTA LA COLUMNA %d EN LA FILA %d \n",j,j+2,i+1);
  69.                puntosN1=puntosN1+5;
  70. matriz[i][j]=1+(rand()%5);
  71.             matriz[i][j+1]=1+(rand()%5);
  72.             matriz[i][j+2]=1+(rand()%5);
  73. break;
  74.            }
  75. }
  76. }
  77. }
  78.  
  79.  
  80.  
  81.  
  82. int main(){
  83. int i,j;
  84. int *puntos=0;
  85. int matriz[MAXFIL][MAXCOL];
  86. for (i=0;i<MAXFIL;i++){
  87.     for(j=0;j<MAXCOL;j++){
  88.          matriz[i][j]=1+rand()%5
  89.           printf("%i",matriz[i][j]);
  90.      }
  91. printf("\n");
  92. }
  93. buscarCaramelosVertical (matriz,puntosN1);
  94. buscarCaramelosHorizontal (matriz,puntosN1);
  95. printf("Ud tiene %i puntos",puntosN1);
  96. }
  97.  

¡¡¡¡ Saluditos! ..... !!!!

:rolleyes: ;) ;) ;) :rolleyes:

P.D: Revisa y corrige un poco el código ya que ni compila.

* Para empezar falta un punto y coma en una línea de main :

Código
  1. matriz[i][j]=1+rand()%5

* Te falta el return de la función main.

*¿ Qué sentido tiene?:

Código
  1. if (contador==3 && j<7 ......

En lugar de usar:

Código
  1. if (contador==3 && j<MAXCOL-2



* Llamas a las funciones con unos nombres y las invocas con otros.

* Tomas como uno de los argumentos de las funciones al invocarlas a la variable puntosN1 que no tienes declarada en main, ni falta que te hace.

Más bien sería:


Código
  1. int main(){
  2.  int i,j;
  3.  int puntos=0;
  4.  int matriz[MAXFIL][MAXCOL];
  5.  for (i=0;i<MAXFIL;i++){
  6.       for(j=0;j<MAXCOL;j++){
  7.            matriz[i][j]=1+rand()%5;
  8.             printf("%i",matriz[i][j]);
  9.        }
  10.  printf("\n");
  11.  }
  12.  buscarHori(matriz,&puntos);
  13.  return 0;
  14. }
  15. ....................................
  16. void buscarHori(int matriz[MAXFIL][MAXCOL],int *puntosN1){
  17. ..........................................
  18.  

Y lo mismo con la otra función.

* ¿Qué sentido tiene:


Código
  1. puntosN1=puntosN1;

Ya sabemos que una variable es igual a si misma.  ;)

*  etc, etc.

Vete arreglando esas cositas y vuelve a postear el avance y especifica de forma concreta qué problemas te surgen.

¡¡¡¡ Saluditos! .....Otra vez !!!!

:rolleyes: ;) ;) ;) :rolleyes:

P.d de P.D: ¿De verdad has hecho tú el código?. Si es así sólo tienes que fijarte un poquito más en lo que pones, porque lo de llamar a las funciones de forma diferente que al invocarlas me parece una pasada de error trivial. ;)


« Última modificación: 15 Febrero 2014, 16:24 pm por leosansan » En línea

Gaby_10

Desconectado Desconectado

Mensajes: 9


Ver Perfil
.
« Respuesta #2 en: 15 Febrero 2014, 21:22 pm »

.
« Última modificación: 15 Febrero 2014, 23:07 pm por Gaby_10 » En línea

Gaby_10

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Busqueda de valores con matrices
« Respuesta #3 en: 15 Febrero 2014, 21:24 pm »

viendo lo que te pase me acabo de dar cuenta que llamo mal los putnos ahora lo corrijo xD
En línea

Gaby_10

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Busqueda de valores con matrices
« Respuesta #4 en: 15 Febrero 2014, 21:31 pm »

Lo siento amigo no sabía como poner el código y lo había escrito pero aquí te lo mando como me dijiste, ya le hice las modificaciones que me acabas de decir pero no me busca bien los números repetido en horizontal  por ejemplo (1 1 2) me la cuenta y no sé si las condiciones que puse están bien, tambien no se si la condicion que tengo cuando no haya combinaciones para generar una matriz nueva esten correctas
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #define MAXFIL 9
  6. #define MAXCOL 9
  7.  
  8.  
  9. void buscaVerN1(int matriz[MAXFIL][MAXCOL],int*puntosn1);
  10. void buscaHoriN1(int matriz[MAXFIL][MAXCOL],int*puntosN1);
  11. void tablero (int matriz[MAXFIL][MAXCOL]);
  12.  
  13. void tablero (int matriz[MAXFIL][MAXCOL]){
  14. int i,j,e;
  15.    printf("        1       2       3       4       5       6       7       8       9 \n");
  16.    printf("-----------------------------------------------------------------------------");
  17. for (i=0;i<MAXFIL;i++){
  18. printf("\n");
  19. printf("%i -- ", i+1);
  20. for (j=0;j<MAXCOL;j++){
  21.  
  22. if (matriz[i][j]==1)
  23. {
  24. e=1;
  25. printf("\t%c",e);
  26. }
  27. if (matriz[i][j]==2)
  28. {
  29. e=2;
  30. printf("\t%c",e);
  31. }
  32. if (matriz[i][j]==3)
  33. {
  34. e=4;
  35. printf("\t%c",e);
  36. }
  37. if (matriz[i][j]==4)
  38. {
  39. e=5;
  40. printf("\t%c",e);
  41. }
  42. if (matriz[i][j]==5)
  43. {
  44. e=15;
  45. printf("\t%c",e);
  46. }
  47. }
  48. printf("\n");
  49. }
  50. getch();
  51. }
  52.  
  53.  
  54.  
  55.  
  56.  
  57. void buscaVerN1(int matriz[MAXFIL][MAXCOL],int*puntosN1){
  58. printf("\n\n------------------>> BUSQUEDA VERTICAL\n\n");
  59. int contador=1,i,j;
  60. for(j=0;j<MAXCOL;j++)
  61. {
  62. contador=1;
  63. for (i=0;i<MAXFIL;i++)
  64. {
  65. if (matriz[i][j]==matriz[i+1][j])
  66. {
  67. contador=contador+1;
  68. }
  69. else{
  70. contador=1;
  71. *puntosN1=*puntosN1;
  72. }
  73.  
  74. if ((contador==3 && i<=MAXFIL-3) && (matriz[i+1][j]==matriz[i+2][j]))
  75. {
  76. printf("\n\n ENCONTRO 4 CARAMELOS EN LA COLUMNA: %d  DESDE LA FILA %d A LA FILA %d \n",j+1,i,i+3);
  77. srand(time(NULL));
  78. matriz[i-1][j]=1+(rand()%5);
  79.             matriz[i][j]=1+(rand()%5);
  80.             matriz[i+1][j]=1+(rand()%5);
  81.             matriz[i+2][j]=1+(rand()%5);
  82. *puntosN1=*puntosN1+7;
  83. }
  84. else
  85. {
  86. if (contador==3 && i<=MAXFIL-2)
  87. {
  88. printf("\n\n ENCONTRO 3 CARAMELOS EN LA COLUMNA: %d  DESDE LA FILA %d A LA FILA %d \n",j+1,i,i+2);
  89. srand(time(NULL));
  90.                   matriz[i-1][j]=1+(rand()%5);
  91.             matriz[i][j]=1+(rand()%5);
  92.             matriz[i+1][j]=1+(rand()%5);
  93. *puntosN1=*puntosN1+5;
  94. }
  95. }
  96.  
  97. }
  98. }
  99. }
  100.  
  101.  
  102. void buscaHoriN1(int matriz[MAXFIL][MAXCOL],int*puntosN1){
  103. printf("\n\n------------------>> BUSQUEDA HORIZONTAL\n\n");
  104. int i,j,contador=1;
  105. for(i=0;i<MAXFIL;i++){
  106. contador=1;
  107. for (j=0;j<MAXCOL;j++){
  108. if (matriz[i][j]==matriz[i][j+1])
  109. {
  110. contador=contador+1;
  111. }
  112. else{
  113. contador=1;
  114. *puntosN1=*puntosN1;
  115. }
  116.  
  117. if ((contador==3 && j<=MAXCOL-3) && (matriz[i][j+1]==matriz[i][j+2]))
  118. {
  119. printf("\n\n ENCONTRO 4 CARAMELOS EN LA COLUMNA: %d  HASTA LA COLUMNA %d EN LA FILA %d \n",j,j+3,i+1);
  120. srand(time(NULL));
  121. matriz[i][j-1]=1+(rand()%5);
  122. matriz[i][j]=1+(rand()%5);
  123.             matriz[i][j+1]=1+(rand()%5);
  124.             matriz[i][j+2]=1+(rand()%5);
  125.  
  126. *puntosN1=*puntosN1+7;
  127. }
  128. else
  129. {
  130. if (contador==3 && j<MAXCOL-2)
  131. {
  132. printf("\n\n ENCONTRO 3 CARAMELOS EN LA COLUMNA: %d  HASTA LA COLUMNA %d EN LA FILA %d \n",j,j+2,i+1);
  133. srand(time(NULL));
  134. matriz[i][j-1]=1+(rand()%5);
  135.                   matriz[i][j]=1+(rand()%5);
  136.             matriz[i][j+1]=1+(rand()%5);
  137. *puntosN1=*puntosN1+5;
  138. }
  139. }
  140.  
  141. }
  142. }
  143. }
  144.  
  145.  
  146.  
  147.  
  148.  
  149. int main(){
  150. system ("COLOR A" );
  151. printf("\n\n==================|| INICIANDO JUEGO ||==================\n\n");
  152. printf(":::::::::::::::::::::::DIVIERTASE:::::::::::::::::::::::\n\n");
  153. system("pause");
  154. system("cls");
  155. int finalJuego=0;
  156. int turnoN1=0;
  157. while (finalJuego!=1){
  158. system ("COLOR F5" );
  159. printf("\n\n\t\t.....|| Cargando Colores ||....\n\n\n\n");
  160. int i,j;
  161. srand(time(NULL));
  162. int matriz[MAXFIL][MAXCOL]={0};
  163. for(i=0;i<MAXFIL;i++){
  164. for(j=0;j<MAXCOL;j++){
  165. matriz[i][j]=1+(rand()%5);
  166. }
  167. }
  168. tablero matriz);
  169. while(turnoN1!=40){
  170. int *puntosN1=0;
  171. int puntos=0;
  172. int valor;  //para comapra el valor de puntaje viejo con el actual
  173. while (turnoN1!=40){
  174. printf("\n\n=============================================================================\n\n\n");
  175. printf("\n\n\t\t.....|| BUSQUEDA DE COLORES ||....\n\n\n\n");
  176. valor=puntos;
  177. buscaVerN1(matriz,&puntos);
  178. buscaHoriN1(matriz,&puntos);
  179. printf("\n\n------------------>>USTED TIENE %i PUNTOS \n\n",puntos);
  180. printf("\n\n------------------>>USTED SE ENCUENTRA EN EL TURNO %i\n\n",turnoN1+1);
  181. turnoN1++;
  182. printf("\n\n=============================================================================\n\n\n");
  183. printf("\n\n\t\t.....|| BAJANDO DE COLORES ||....\n\n\n\n");
  184. tablero (matriz);
  185. if (valor==puntos){ //para generar valores nuevos en caso de no ahber combinaciones
  186. printf("\n\n\t\t.....|| NO HAY COMBIANCIONES POSIBLES||....\n\n\n\n");
  187. for(i=0;i<MAXFIL;i++){
  188. for(j=0;j<MAXCOL;j++){
  189. matriz[i][j]=1+(rand()%5);
  190. }
  191. }
  192. tablero matriz);
  193. }
  194. }
  195.  
  196.  
  197.  
  198. }
  199.  
  200. finalJuego=0;
  201. printf("TERMINO JUEGO")
  202. }
  203.  
  204.  
  205. return 0;
  206.  
  207.  
  208. }
« Última modificación: 16 Febrero 2014, 03:47 am por Gaby_10 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] Necesito ayuda con cómo pasar valores de matrices a una función...
Programación C/C++
niñoAtómico 2 2,529 Último mensaje 15 Octubre 2013, 03:13 am
por niñoAtómico
Buscar valores en matrices
Programación C/C++
Gaby_10 1 1,575 Último mensaje 15 Febrero 2014, 13:05 pm
por vangodp
Busqueda en matrices
Programación C/C++
jengley 1 1,727 Último mensaje 4 Marzo 2016, 00:35 am
por abaadoon
Guardar valores en matrices
Programación C/C++
hector_suarez 0 1,121 Último mensaje 28 Mayo 2018, 04:08 am
por hector_suarez
MATRICES: Rellenar con valores que ingresa el usuario
Programación C/C++
gremlin 1 2,302 Último mensaje 19 Octubre 2019, 00:04 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines