Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DickGumshoe en 21 Enero 2012, 00:02 am



Título: Problema con funciones
Publicado por: DickGumshoe en 21 Enero 2012, 00:02 am
Hola.

Hace tiepo hice un programa que consistía en crear el juego de la ruleta. Ahora que he empezado a ver el tema de funciones, me gustaría hacerlo de esta forma.

Mientras antes tenía esto en la función main:

Código
  1. if(opcion==1){
  2.    do{
  3.    printf("\nIntroduce un 0 si apuestas por par o un 1 si es por impar");
  4.    scanf("%d",&x);
  5.    }
  6.    while((x!=0)&&(x!=1));
  7.  
  8.    if((x==0)&&(dado%2==0)){
  9.    bolsa=bolsa+2*apuesta;
  10.    printf("\nHas acertado, es par. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
  11.    }
  12.    else{
  13.      if((x==1)&&(dado%2!=0)){
  14.      bolsa=bolsa+2*apuesta;
  15.      printf("\nHas acertado, es impar. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
  16.      }
  17.      else{
  18.        if((x==0)&&(dado%2!=0)){
  19.        printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
  20.        }  
  21.        else{
  22.          if((x==1)&&(dado%2==0)){
  23.          printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
  24.          }      
  25.        }  
  26.      }  
  27.  
  28.    }            
  29.  }

Ahora pongo lo siguiente en una función:

Código
  1. int opcion_1 (int x){
  2.    int dado,apuesta,bolsa;
  3.    srand(time(NULL));
  4.    dado= rand()%36;
  5.    do{
  6.    printf("\nIntroduce un 0 si apuestas por par o un 1 si es por impar");
  7.    scanf("%d",&x);
  8.    }
  9.    while((x!=0)&&(x!=1));
  10.  
  11.    if((x==0)&&(dado%2==0)){
  12.    bolsa=bolsa+2*apuesta;
  13.    printf("\nHas acertado, es par. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
  14.    }
  15.    else{
  16.      if((x==1)&&(dado%2!=0)){
  17.      bolsa=bolsa+2*apuesta;
  18.      printf("\nHas acertado, es impar. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
  19.      }
  20.      else{
  21.        if((x==0)&&(dado%2!=0)){
  22.        printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
  23.        }  
  24.        else{
  25.          if((x==1)&&(dado%2==0)){
  26.          printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
  27.          }      
  28.        }  
  29.      }          
  30.    }    
  31.  
  32. }
  33.  
  34.  return(0);    
  35. }

Y, después, voy a la función main, y pongo:

Código
  1. int main (void){
  2.  
  3.  int opcion_juego,apuesta,bolsa,x,dado;
  4.  srand(time(NULL));
  5.  dado= rand()%36;
  6.  
  7.  
  8.    mostrar_ruleta();
  9.    apostar_fichas(apuesta);
  10.    opcion(opcion_juego);
  11.    bolsa=bolsa-apuesta;
  12.    opcion_1(x); //Esto es lo referente a la funcion
  13.  
  14.  

Por favor, ¿alguien podría explicarme cuál es mi problema?

Muchas gracias.

Saludos.

EDITO: Acabo de conseguir que la función funcione dentro de main. Pero creo que las variables se lían unas con otras, porque me dice que la bolsa es "9857437" y que el número que ha salido es "487434"...

Gracias.


Título: Re: Problema con funciones
Publicado por: rir3760 en 22 Enero 2012, 03:28 am
El error se encuentra en ambas funciones ("main" y "opcion_1", a esta ultima mejor dale un nombre descriptivo como "jugar" o "apostar"). En ambas declaras la variable local "bolsa", eso ya sugiere un error (lógico), el problema es que tratas de utilizar su valor

En la función principal:
Código
  1. bolsa = bolsa - apuesta;

En la función "opcion_1":
Código
  1. bolsa = bolsa + 2 * apuesta;

Sin darle un valor inicial, si eso sucede la variable inicia almacenando un valor no definido o "basura", de ahí el resultado que obtienes.

Un saludo


Título: Re: Problema con funciones
Publicado por: DickGumshoe en 22 Enero 2012, 11:48 am
Muchísimas gracias, ya lo he corregido.

A opcion_1 le he llamado así porque hay 11 opciones de juego (si hubiera sido la única, le hubiera llamado de otra forma).

Saludos.