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

 

 


Tema destacado: Estamos en la red social de Mastodon


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

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Error con un número
« en: 14 Enero 2019, 09:47 am »

La cosa es que mi programa funciona correctamente, hasta que saca un numero y el contador se vuelve loco. El código es un bingo, el cual crea dos cartones y va creando bolas y gana el primer cartón que descarte mas números, y lo que pasa, es que, todo funciona bien, hasta que sale el numero 88, cuando sale ese número, los contadores se vuelven locos y no he conseguido encontrar el error tonto que tendré, si alguien me puediese ayudar..!. Les dejo el código abajo, con la parte donde yo creo que esta el error separado por /*****, gracias.
Código:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>

void ImprimoPrincipio();
int GeneradorNumero();
void ImprimirCarton1(int[]);
void ImprimirCarton2(int[]);

int main(void){
    int y=0, z, a, sacadas[100], bolas=0, final=0, contador1=0, contador2=0;
    int numerosCarton1 [100], numerosCarton2[100], numerosBolas[100];
    int vectorCarton1[20], vectorCarton2[20];
    srand(time(NULL));
    ImprimoPrincipio();
    for(int i=0;i<100;i++){             //Genero numeros de Carton1 (100)
        numerosCarton1[y]=i+1;
        y++;
    }
    y=0;
    for(int j=0;j<100;j++){             //Genero numeros de Carton2 (100)
        numerosCarton2[y]=j+1;
        y++;
    }
    y=0;
    for(int u=0;u<100;u++){             //Genero numeros de bolas (100)
        numerosBolas[y]=u+1;
        y++;
    }
    for(int i=0;i<20;i++){                  //Creo vectorCarton1 (20)
        do{
            z=GeneradorNumero();
        }while(numerosCarton1[z]==0);
        vectorCarton1[i]=numerosCarton1[z];
        numerosCarton1[z]=0;
    }
    for(int j=0;j<20;j++){                      //Creo vectorCarton2 (20)
        do{
            z=GeneradorNumero();
        }while(numerosCarton2[z]==0);
        vectorCarton2[j]=numerosCarton2[z];
        numerosCarton2[z]=0;
    }
    printf("\nCarton1:\n");
    ImprimirCarton1(vectorCarton1);
    printf("\nCarton2:\n");
    ImprimirCarton2(vectorCarton2);
    getchar();
    do{
        system("cls");
        ImprimoPrincipio();
        do{
            z=GeneradorNumero();
        }while(numerosBolas[z]==0);
        a=numerosBolas[z];
        numerosBolas[z]=0;
        sacadas[bolas]=a;
        printf("Bolas: ");
        for(int i=0;i<=bolas;i++){
            printf("%d ", sacadas[i]);
        }
        bolas++;
        //**************************************************
        for(int j=0;j<20;j++){
            if(vectorCarton1[j]==a&&a!=88){
                vectorCarton1[j]=0x58;
                contador1++;
                printf("\nContador1=%d\n",contador1);
            }
            if(vectorCarton1[j]==a&&a==88){
                vectorCarton1[j]=0x58;
                contador1++;
                printf("\nContador1=%d\n",contador1);
            }
        }
        for(int u=0;u<20;u++){
            if(vectorCarton2[u]==a&&a!=88){
                vectorCarton2[u]=0x58;
                contador2++;
                printf("\nContador2=%d\n",contador2);
            }
            if(vectorCarton2[u]==a&&a==88){
                vectorCarton2[u]=0x58;
                contador2++;
                printf("\nContador2=%d\n",contador2);
            }
        }
        //******************************************************
        printf("\nCarton1:\n");
        ImprimirCarton1(vectorCarton1);
        printf("\nCarton2:\n");
        ImprimirCarton2(vectorCarton2);
        if(contador1==20){
            printf("Gana el Jugador 1\n");
            final=1;
        }
        if(contador2==20){
            printf("Gana el Jugador 2\n");
            final=1;
        }
        getchar();
    }while(final==0);
    return 0;
}

void ImprimoPrincipio(void){
    printf("----------------------------\n");
    printf("Juego del bingo simplificado\n");
    printf("----------------------------\n");
}

int GeneradorNumero(void){
    int num;
    num=rand()%100;
    return num;
}

void ImprimirCarton1(int vectorCarton1[]){
    int v;
    for(int j=0;j<20;j++){
        if(vectorCarton1[j]==0x58){
            printf("%c", vectorCarton1[j]);
            printf("  ");
            if(j==4||j==9||j==14||j==19){
                printf("\n");
            }
        }else{
            printf("%d",vectorCarton1[j]);
            v=vectorCarton1[j]/10;
            if(v<1){
                printf("  ");
            }else{
                printf(" ");
            }
            if(j==4||j==9||j==14||j==19){
                printf("\n");
            }
        }
    }
}

void ImprimirCarton2(int vectorCarton2[]){
    int v;
    for(int j=0;j<20;j++){
        if(vectorCarton2[j]==0x58){
            printf("%c", vectorCarton2[j]);
            printf("  ");
            if(j==4||j==9||j==14||j==19){
                printf("\n");
            }
        }else{
            printf("%d",vectorCarton2[j]);
            v=vectorCarton2[j]/10;
            if(v<1){
                printf("  ");
            }else{
                printf(" ");
            }
            if(j==4||j==9||j==14||j==19){
                printf("\n");
            }
        }
    }
}



En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Error con un número
« Respuesta #1 en: 14 Enero 2019, 12:51 pm »

Tienes código redundante y cosas que se pueden simplificar pero explícame esto. Porque por una cosa u otra el programa hace lo mismo exactamente.

Código
  1. if(vectorCarton1[j]==a&&a!=88){
  2.    vectorCarton1[j]=0x58;
  3.    contador1++;
  4.    printf("\nContador1=%d\n",contador1);
  5. }
  6. if(vectorCarton1[j]==a&&a==88){
  7.    vectorCarton1[j]=0x58;
  8.    contador1++;
  9.    printf("\nContador1=%d\n",contador1);
  10. }


« Última modificación: 14 Enero 2019, 12:54 pm por MAFUS » En línea

reylor

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Error con un número
« Respuesta #2 en: 14 Enero 2019, 13:02 pm »

Porque he intentado solucionar el problema con la bola 88, poniendo esos dos ifs, porque pensaba que así, cuando la bola fuera distinta a 88, se metiera en un if, y si es igual se meta en otro, porque he visto que lo que realmente hace el programa es que cuando detecta la bola 88, empieza a sumar en los contadores sin ningún control.
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Error con un número
« Respuesta #3 en: 14 Enero 2019, 15:26 pm »

Cuando marcas lo ya visitado con el numero 0x58 estas usando el numero 88 para marcar.
Esto podria marcar varias posiciones antes que pueda aparecer el 88.
Cuando este aparece finalmente, tu logica hara que la condicion sea cierta para todas las posiciones que has marcado, y haras entonces que el contador crezca tanto como marcas haya.

Solucion?  Usa un valor mayor que 100 para marcar.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
reylor

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Error con un número
« Respuesta #4 en: 14 Enero 2019, 15:42 pm »

No lo he entendido bien, ¿a que te refieres exactamente?, por cierto, muchas gracias por la ayuda.
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Error con un número
« Respuesta #5 en: 14 Enero 2019, 16:03 pm »

Reemplaza cada 0x58 por un numero mayor que 100, por ejemplo 101.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
reylor

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Error con un número
« Respuesta #6 en: 14 Enero 2019, 16:04 pm »

vale, ahora si, muchas gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Existe una lista de los numero de error de Vb6.0
Programación Visual Basic
hunter18 1 4,034 Último mensaje 15 Diciembre 2010, 22:51 pm
por ssccaann43 ©
error numero de intentos ususario contraseña
Programación Visual Basic
d00ze13 3 6,739 Último mensaje 16 Febrero 2011, 21:43 pm
por 79137913
Error al hacer la factorial de un numero en C
Programación C/C++
diegofah 2 2,565 Último mensaje 6 Septiembre 2013, 16:49 pm
por ecfisa
Error convertir numero a letras
PHP
pompyarro 5 2,997 Último mensaje 17 Agosto 2017, 15:28 pm
por engel lex
Numero mayor y numero menor!!!! (error)
Java
CharlyScoTT 2 3,837 Último mensaje 21 Octubre 2017, 19:46 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines