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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 31
91  Programación / Programación C/C++ / Re: Comparando cadenas en: 24 Enero 2012, 10:59 am
Hola

Tienes 2 fallos:
Código
  1. char nombre[10][20], i, aux;
  2.  
  3. for (i=0;i<=10;i++)
  4.  

1- Tienes declarado aux como char, debes declararlo como: char aux[20];
2- En el for donde introduces los nombres te sobra el = en i<=10, debe ser i<10

Saludos
92  Programación / Programación C/C++ / Re: Problema con strcat en: 22 Enero 2012, 19:16 pm
Hola


EDITO: Estaba intentándolo, y al declarar la variable aux, he puesto esto:

Código
  1. aux[60]={};

Y ahora me sale bien. ¿Será porque no le di antes un valor a aux?


El problema está aquí:
Código
  1. strcat(aux, nombre);
  2.  

Ya que como bien sabes strcat() se utiliza para concatenar cadenas, entonces lo que hace es añadir detrás del carácter '\0' de aux lo que hay en nombre, pero al no estar inicializado aux, puede que no tenga el carácter '\0', por eso falla.

Una solución sería inicializar aux como has hecho o en lugar de concatenar, copiar para darle el primer valor:
Código
  1. strcpy(aux, nombre);
  2. strcat(aux, ", nacido el ");
  3. strcat(aux, dia);
  4. strcat(aux, "/");
  5. strcat(aux, mes);
  6.  

Saludos
93  Programación / Programación C/C++ / Re: Comparando cadenas en: 22 Enero 2012, 19:05 pm
Hola

Citar
Por lo que parece, el error está en que en gets no puedo poner
Código
  1. gets(nombre[i][20]);
  2.  
Aunque no estoy seguro.

No puedes, si te fijas, al poner nombre[ i][20] estás accediendo a un carácter, pero en cada nombre[ i] hay un char[20], por lo tanto debes poner:
Código
  1. gets(nombre[i]);
  2.  

Lo mismo pasa con todos los strcmp(), por eso te falla. Debes poner:
Código
  1. strcmp(nombre[0], aux) ||
  2. strcmp(nombre[1], aux) ||
  3. strcmp(nombre[2], aux) ||
  4. etc...
  5.  

Además no es recomendable el uso de gets(), utiliza mejor fgets()

Saludos
94  Programación / Programación C/C++ / Re: Como se hace para poner colores de fondo en los programas, cambiar la letra,etc. en: 19 Enero 2012, 21:22 pm
Nunca lo he hecho jaja
95  Programación / Programación C/C++ / Re: Como se hace para poner colores de fondo en los programas, cambiar la letra,etc. en: 19 Enero 2012, 21:07 pm
Hola

Poder se puede, pero tendrías que utilizar bibliotecas que no pertenecen a C estándar, por ejemplo para gráficos y esas cosas, pero poder puedes.

Saludos
96  Programación / Programación C/C++ / Re: Tengo un problema en un programa simple, no entiendo cual es. en: 19 Enero 2012, 20:49 pm
Hola

Para hacer potencias con cualquier exponente puedes usar esta función:

Código
  1. int potencia(int base, int exp)
  2. {
  3.    int i, resul = 1;
  4.  
  5.    for(i = 0; i < exp; i++)
  6.        resul *= base;
  7.  
  8.    return resul;
  9. }
  10.  

O también puedes usar la función pow() que está incluida en math.h que tiene muchas funciones matemáticas.

Saludos
97  Programación / Programación C/C++ / Re: Como se hace para poner colores de fondo en los programas, cambiar la letra,etc. en: 19 Enero 2012, 20:40 pm
Hola

En C estándar CREO que no se puede, que alguien me corrija si me equivoco.

Si usas Windows puedes usar su API, para cambiar el color del texto la función que se utiliza es SetConsoleTextAttribute

Saludos
98  Programación / Programación C/C++ / Re: Duda sobre Cuatro en línea 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
99  Programación / Programación C/C++ / Re: Duda sobre Cuatro en línea 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
100  Programación / Programación C/C++ / Re: Duda sobre Cuatro en línea en: 19 Enero 2012, 18:03 pm
Hola

Claro, esa matriz.

Un ejemplo sería:
Código
  1. int finPartida(int m[FILAS][COLUMNAS])
  2. {
  3.    int i, j;
  4.    for(i = FILAS-1; i >= 3; i--)
  5.        for(j = COLUMNAS-1; j >= 3; j--)
  6.            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) || /*Aqui comprobamos si hay 4 iguales en la misma fila*/
  7.               (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) || /*Aqui comprobamos si hay 4 iguales en la misma columna*/
  8.               (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)) /*Aqui comprobamos si hay 4 iguales en la diagonal principal*/
  9.                return 1;
  10.  
  11.    for(i = FILAS-1; i >= 3; i--)
  12.        for(j = 0; j <= COLUMNAS-3; j++)
  13.            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) /*Aqui comprobamos si hay 4 iguales en la diagonal secundaria*/
  14.                return 1;
  15.  
  16.    return 0;
  17. }
  18.  

Aquí debes cambiar FILAS y COLUMNAS por 8, yo lo he hecho genérico.

Entonces si devuelve 1 es que hay 4 en raya, si devuelve 0 sigue el juego. Ahora tienes que meter en el main la llamada a esta función, y dependiendo del valor de retorno se acabará el juego o no.

Me voy a poner a hacer una versión del juego utilizando lo que llevas hasta ahora, cuando lo termine lo pongo aquí.

Saludos
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 31
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines