Problema con funciones

Iniciado por DickGumshoe, 21 Enero 2012, 00:02 AM

0 Miembros y 1 Visitante están viendo este tema.

DickGumshoe

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:

if(opcion==1){
   do{
   printf("\nIntroduce un 0 si apuestas por par o un 1 si es por impar");
   scanf("%d",&x);
   }
   while((x!=0)&&(x!=1));
   
   if((x==0)&&(dado%2==0)){
   bolsa=bolsa+2*apuesta;
   printf("\nHas acertado, es par. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
   }
   else{
     if((x==1)&&(dado%2!=0)){
     bolsa=bolsa+2*apuesta;
     printf("\nHas acertado, es impar. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
     }
     else{
       if((x==0)&&(dado%2!=0)){
       printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
       }  
       else{
         if((x==1)&&(dado%2==0)){
         printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
         }      
       }  
     }  
       
   }            
 }


Ahora pongo lo siguiente en una función:

int opcion_1 (int x){
   int dado,apuesta,bolsa;
   srand(time(NULL));
   dado= rand()%36;
   do{
   printf("\nIntroduce un 0 si apuestas por par o un 1 si es por impar");
   scanf("%d",&x);
   }
   while((x!=0)&&(x!=1));
   
   if((x==0)&&(dado%2==0)){
   bolsa=bolsa+2*apuesta;
   printf("\nHas acertado, es par. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
   }
   else{
     if((x==1)&&(dado%2!=0)){
     bolsa=bolsa+2*apuesta;
     printf("\nHas acertado, es impar. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
     }
     else{
       if((x==0)&&(dado%2!=0)){
       printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
       }  
       else{
         if((x==1)&&(dado%2==0)){
         printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
         }      
       }  
     }          
   }    
       
}

 return(0);    
}


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

int main (void){
   
 int opcion_juego,apuesta,bolsa,x,dado;
 srand(time(NULL));
 dado= rand()%36;
 
 
   mostrar_ruleta();
   apostar_fichas(apuesta);
   opcion(opcion_juego);
   bolsa=bolsa-apuesta;
   opcion_1(x); //Esto es lo referente a la funcion



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.

rir3760

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:
bolsa = bolsa - apuesta;

En la función "opcion_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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

DickGumshoe

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.