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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  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 2,527 veces)
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Problema con funciones
« 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.


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

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Problema con funciones
« Respuesta #1 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


En línea

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


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Problema con funciones
« Respuesta #2 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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al crear funciones
Programación Visual Basic
taliban1707 4 1,811 Último mensaje 28 Marzo 2008, 20:36 pm
por taliban1707
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 23,980 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
Problema con Funciones en C
Programación C/C++
;c1v!c 8 3,378 Último mensaje 17 Agosto 2011, 10:19 am
por satu
Ayuda!! Problema con las funciones.
Programación C/C++
elkiy 4 2,467 Último mensaje 15 Junio 2012, 21:38 pm
por elkiy
Problema con funciones scanf() y gets().
Programación C/C++
latinoalfredo 0 1,989 Último mensaje 22 Octubre 2012, 17:45 pm
por latinoalfredo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines