Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/04/2012, 09:37
mike915
 
Fecha de Ingreso: abril-2012
Ubicación: Mexico
Mensajes: 7
Antigüedad: 12 años
Puntos: 0
Simulador de sistema de apuesta, no encuentro el error!!

Hola, hice un programa en C que simula un sistema de apuesta pero me imprime mal la variable (apuesta), tampoco funciona como deberia pero creo q es por eso de que la variable no toma el valor q deberia creo q es un error en el tipo de dato pero no lo se me pueden ayudar este es el codigo.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

void encuentraMayor (long long int veces[N][N],long long int bank[N][N]);
long long int SistemaB (long long int (*bankroll),long double (*apuesta),long long int semilla,long long int vueltas, float prcnto_g, float prcnto_p);

int main()
{    
    long long int na[N][N], i, j, s, p;
    long long int v[N][N];
    long long int bank[N][N];
    long double apuesta[N][N];
    long long int manos=10000;
    float a_g, a_p;
    
    a_g=0.1;
    a_p=0.1;
    
    srand (time (NULL));
    
    for (i=0;i<N;i++)
    {
        for (j=0;j<N;j++)
        {
            v[i][j]=0;
        }        
    }
                    
    for (p=0;p<100;p++)
    {
        
        for (i=0;i<N;i++)
        {
            for (j=0;j<N;j++)
            {
                apuesta[i][j]=10;
            }        
        }
        
        for (i=0;i<N;i++)
        {
            for (j=0;j<N;j++)
            {
                bank[i][j]=100;
            }        
        }        
        
        s=rand () %RAND_MAX;    
     
        for (i=0;i<N;i++)        
        {
            for (j=0;j<N;j++)
            {
                na[i][j]=SistemaB (&(bank[i][j]),&(apuesta[i][j]),s,manos,a_g,a_p);
                a_g=(i+1)/10;
                a_p=(j+1)/10;                
            }
        }
        
        printf ("\n");
        
        for (i=0;i<N;i++)        
        {
            for (j=0;j<N;j++)
            {
                printf ("%lld   ",bank[i][j]);
            }
            printf ("\n");
        }
        
        encuentraMayor (v,bank);              
    }
    
    for (i=0;i<N;i++)
    {
        for (j=0;j<N;j++)
        {
            printf ("%lld,%lld = %lld\n",i,j,v[i][j]);
        }        
    }
    
    return (EXIT_SUCCESS);
}

void encuentraMayor (long long int veces[N][N],long long int bank[N][N])
{
    long long int i, j, mayor=-2;
        
    for (i=0;i<N;i++)
    {
        for (j=0;j<N;j++)
        {
            if (bank[i][j]>mayor)
            {
                mayor=bank[i][j];
            }
        }
    }
    
    for (i=0;i<N;i++)
    {
        for (j=0;j<N;j++)
        {
            if (mayor==-1)
            {
                break;
            }
           
            if (bank[i][j]==mayor)
            {
                veces[i][j]++;
            }
        }
    }    
    
    return ;
}

long long int SistemaB (long long int (*bankroll),long double (*apuesta),long long int semilla,long long int vueltas, float prcnto_g, float prcnto_p)
{
    long long int na=0, banknet=(*bankroll), bi=(*bankroll), b=1, qpaso;
    
    srand (semilla);
    
    (*apuesta)=10;
    
    do
    {
        qpaso=rand () %2;
        
        if ((*apuesta)>(*bankroll))
        {
            printf ("B Fondos insuficientes %LF\n",(*apuesta)); /*esto es lo que imprime mal, imprime algo asi como esto: -6374687364187346817264*/
            (*bankroll)=-1;
            break;
        }
        
        if ((*bankroll)<banknet)
        {
            bi=banknet;            
            b=0;            
            if (qpaso==1)
            {
                (*bankroll)+=(*apuesta);
            }
            else
            {
                (*bankroll)=(*bankroll)-(*apuesta);
            }
        }
        else
        {   
            if (qpaso==1)
            {
                if (b==0)
                {
                    (*apuesta)=10;
                    b=1;
                }
                
                (*bankroll)+=(*apuesta);                
                banknet=(*bankroll);                
                (*apuesta)=(banknet-bi)*prcnto_g;
            }
            else
            {
                (*bankroll)=(*bankroll)-(*apuesta);
                (*apuesta)=(*apuesta)*prcnto_p;
            }        
        }
        
        if (((*apuesta)-(int) (*apuesta))<.6)
        {
            (*apuesta)=(int)(*apuesta);
        }
        else
        {                    
            (*apuesta)=((int) (*apuesta))+1;
        }
        
        na++;
        
    }while (na<vueltas);
    
    return na;
}