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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre Cuatro en línea
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre Cuatro en línea  (Leído 6,154 veces)
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Duda sobre Cuatro en línea
« Respuesta #10 en: 19 Enero 2012, 18:25 pm »

No sé por qué, pero me da el error
" too few arguments to function `int finPartida(int (*)[8])' "
Haciendo esto:


Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int finPartida(int m[8][8])
  5. {
  6.  
  7.    int i, j;
  8.    for(i = 8-1; i >= 3; i--)
  9.        for(j = 8-1; j >= 3; j--)
  10.            if((m[i][j] == m[i-1][j] && m[i][j] == m[i-2][j] && m[i][j] == m[i-3][j] && m[i][j] != 0) ||
  11.               (m[i][j] == m[i][j-1] && m[i][j] == m[i][j-2] && m[i][j] == m[i][j-3] && m[i][j] != 0) ||
  12.               (m[i][j] == m[i-1][j-1] && m[i][j] == m[i-2][j-2] && m[i][j] == m[i-3][j-3] && m[i][j] != 0))
  13.                return 1;
  14.  
  15.    for(i = 8-1; i >= 3; i--)
  16.        for(j = 0; j <= 8-3; j++)
  17.            if(m[i][j] == m[i-1][j+1] && m[i][j] == m[i-2][j+2] && m[i][j] == m[i-3][j+3] && m[i][j] != 0)
  18.                return 1;
  19.  
  20.    return 0;
  21. }
  22.  
  23.  
  24. int main (void)
  25. {
  26.   int M[8][8];
  27.  
  28.  int i, j, col, jugador, s, fila[8];
  29.  
  30.   for(i=0; i<8; i++){
  31.       for(j=0; j<8; j++){
  32.           M[i][j] = 0;
  33.       }
  34.       fila[i] = 7;
  35.   }
  36.  
  37.   jugador = 1;
  38.  
  39.   do{    
  40.  
  41.  
  42.   for(i=0; i<8; i++){
  43.       for(j=0; j<8; j++){
  44.           printf("%d  ",M[i][j]);                
  45.       }  
  46.       printf("\n");                                  
  47.   }
  48.  
  49.   printf("Introduce la columna (1-8): ");
  50.   scanf("%d", &col);
  51.  
  52.   col = col-1;
  53.  
  54.   M[fila[col]][col] = jugador;
  55.  
  56.   fila[col]--; //
  57.  
  58.  
  59.   do{
  60.   printf("Introduzca un 0 si abandona o un 1 si quiere seguir jugando: ");
  61.   scanf("%d", &s);
  62.   jugador = 3-jugador;
  63.   }
  64.   while((s<0)||(s>1));
  65.   }
  66.   while(s==1);
  67.  
  68.   finPartida();
  69.  
  70.  
  71.  
  72.  
  73. system("pause");    
  74. return 0;
  75. }

El código en sí lo he entendido.

Gracias.


En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Duda sobre Cuatro en línea
« Respuesta #11 en: 19 Enero 2012, 18:31 pm »

Hola

El error que te está dando está en la llamada a la función, tú tienes finPartida(); pero debes pasarle la matriz finPartida(M);

Te pongo mi programa y así lo comparas, y si tienes alguna duda pregunta.

Código
  1. #include <stdio.h>
  2.  
  3. #define FILAS 8
  4. #define COLUMNAS 8
  5.  
  6. void mostrarTablero(int m[FILAS][COLUMNAS]);
  7. int finPartida(int m[FILAS][COLUMNAS]);
  8.  
  9. int main(void)
  10. {
  11.    int m[FILAS][COLUMNAS];
  12.    int i, j, col, jugador, s = 0;
  13.    int fila[COLUMNAS];
  14.  
  15.    for(i = 0; i < 8; i++)
  16.    {
  17.        for(j = 0; j < 8; j++)
  18.            m[i][j] = 0;
  19.        fila[i] = 7;
  20.    }
  21.  
  22.    jugador = 1;
  23.  
  24.    do
  25.    {
  26.        mostrarTablero(m);
  27.  
  28.        printf("\nTurno del jugador %d\n", jugador);
  29.  
  30.        do
  31.        {
  32.            printf("Introduce la columna (1-8): ");
  33.            scanf("%d", &col);
  34.            if(fila[col-1] < 0)
  35.            {
  36.                col = 0;
  37.                printf("\nEsa columna esta llena\n\n");
  38.            }
  39.        }
  40.        while(col < 1 || col > 8);
  41.  
  42.        col = col-1;
  43.        m[fila[col]][col] = jugador;
  44.        fila[col]--;
  45.  
  46.        jugador = 3 - jugador;
  47.  
  48.        s = finPartida(m);
  49.    }
  50.    while(s == 0);
  51.  
  52.    mostrarTablero(m);
  53.  
  54.    printf("\n\nGANADOR EL JUGADOR %d\n\n", 3 - jugador);
  55.  
  56.    while(getchar() != '\n');
  57.    printf("Pulsa Enter para salir...");
  58.    getchar();
  59.    return 0;
  60. }
  61.  
  62.  
  63. void mostrarTablero(int m[FILAS][COLUMNAS])
  64. {
  65.    int i, j;
  66.  
  67.    printf("\n");
  68.    for(i = 0; i < FILAS; i++)
  69.    {
  70.        printf("%d - ", i+1);
  71.        for(j = 0; j < COLUMNAS; j++)
  72.            printf("%i  ", m[i][j]);
  73.        printf("\n");
  74.    }
  75.  
  76.    printf("   ");
  77.    for(j = 0; j < COLUMNAS; j++)
  78.        printf("___");
  79.  
  80.    printf("\n    ");
  81.    for(j = 0; j < COLUMNAS; j++)
  82.        printf("%i  ", j+1);
  83.    printf("\n\n");
  84. }
  85.  
  86.  
  87. int finPartida(int m[FILAS][COLUMNAS])
  88. {
  89.    int i, j;
  90.    for(i = FILAS-1; i >= 3; i--)
  91.        for(j = COLUMNAS-1; j >= 3; j--)
  92.            if((m[i][j] == m[i-1][j] && m[i][j] == m[i-2][j] && m[i][j] == m[i-3][j] && m[i][j] != 0) ||
  93.               (m[i][j] == m[i][j-1] && m[i][j] == m[i][j-2] && m[i][j] == m[i][j-3] && m[i][j] != 0) ||
  94.               (m[i][j] == m[i-1][j-1] && m[i][j] == m[i-2][j-2] && m[i][j] == m[i-3][j-3] && m[i][j] != 0))
  95.                return 1;
  96.  
  97.    for(i = FILAS-1; i >= 3; i--)
  98.        for(j = 0; j <= COLUMNAS-3; j++)
  99.            if(m[i][j] == m[i-1][j+1] && m[i][j] == m[i-2][j+2] && m[i][j] == m[i-3][j+3] && m[i][j] != 0)
  100.                return 1;
  101.  
  102.    return 0;
  103. }
  104.  

Saludos


En línea

Breakbeat como forma de vida
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Duda sobre Cuatro en línea
« Respuesta #12 en: 19 Enero 2012, 18:42 pm »

Muchísimas gracias. Ya entiendo el programa entero.

Ahora voy a intentar hacer la opción de si hay 4 en vertical, que me parece que en su código no sale bien.

Saludos.
En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Duda sobre Cuatro en línea
« Respuesta #13 en: 19 Enero 2012, 19:12 pm »

Hola

Tienes razón, en las 3 primeras columnas no funciona el vertical, hice el código a ojo sin probarlo y esto es lo que pasa, pero es fácil de arreglar.

Bueno me alegro de que te haya quedado todo claro.

Saludos

Edito: también pasa lo mismo con las horizontales en las 3 filas de arriba
« Última modificación: 19 Enero 2012, 19:13 pm por satu » En línea

Breakbeat como forma de vida
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines