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