elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:54  


Tema destacado: Únete al Grupo Steam elhacker.NET

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Problema con funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con funciones  (Leído 201 veces)
DickGumshoe

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
Problema con funciones
« en: 21 Enero 2012, 00:02 »

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
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:

Código
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:

Código
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.


« Última modificación: 21 Enero 2012, 00:40 por DickGumshoe » En línea
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Problema con funciones
« Respuesta #1 en: 22 Enero 2012, 03:28 »

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

En la función "opcion_1":
Código
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


En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
DickGumshoe

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
Re: Problema con funciones
« Respuesta #2 en: 22 Enero 2012, 11:48 »

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.
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con funciones en c++
Programación C/C++
maryrisas 5 995 Último mensaje 24 Enero 2006, 22:28
por Cobac
Problema con funciones (resuelto)
Programación C/C++
Gotttlieb 2 544 Último mensaje 10 Marzo 2011, 15:41
por Gotttlieb
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 2,009 Último mensaje 19 Mayo 2011, 23:39
por Littlehorse
Problema con Funciones en C
Programación C/C++
;c1v!c 8 603 Último mensaje 17 Agosto 2011, 10:19
por satu
problema con arrays y funciones
Programación C/C++
Meylar 3 871 Último mensaje 4 Octubre 2011, 15:18
por LearningSpanishProgrammer
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines