C/Visual C - Problema con funciones en C

 
Vista:
sin imagen de perfil
Val: 27
Ha disminuido su posición en 3 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por Brian (14 intervenciones) el 11/07/2020 04:46:16
Estaba completando mi trabajo, de un juego de dados con funciones, compila y todo, el problema, cuando te pregunta si quiero continuar jugando, cuando le doy 's' o 'S' (como respuesta a sí), repite la misma pregunta, y sucede consecutivamente, solo tengo ese inconveniente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<unistd.h>
#include<ctype.h>
 
int hacerTirada(void);
int seguirJugando(void);
void juegaDados(void);
 
void main(void){
	juegaDados();
}
 
int hacerTirada(){ //Tirar dados
	char tirar;
 
	do{
		puts("¿Realizar tirada? (S/N)");
		scanf("%c",&tirar);
		getchar();
		tirar = toupper(tirar); // Convierte a mayúsculas el contenido previo de tirar
		switch(tirar){
			case 'S': puts("Iniciando un nuevo juego...\n");
			break;
			case 'N': puts("Esta bien, tomate un tiempo para retomar un nuevo juego...\n");
			break;
			default: puts("No entendi tu respuesta! Intenta de nuevo.\n");
			break;
			sleep(2);
		}
	}while(tirar !='S'); // Mientras la respuesta no sea "S"
}
int seguirJugando(){ //Continuar o cerrar el juego
	char continuar;
 
		puts("¿Continuar jugando? (S/N)\n");
		scanf("%c",&continuar);
		continuar = toupper(continuar); // Convierte a mayúsculas el contenido previo de continuar
		getchar();
		switch(continuar){
			case 'S': puts("Volver a jugar\n");
			break;
			case 'N': puts("Esta bien, pero se que volveras, hasta pronto!...\n");
			break;
			default: puts("No entendi tu respuesta asi que seguiremos jugando!.\n");
			continuar = 'S'; // Asigna arbitrariamente el valor de seguir jugando
			break;
		}
 
}
void juegaDados(void){ //Cuerpo del juego
	int jugador, maquina;
	char tirar, continuar;
 
	srand(time(0));
	hacerTirada();
	jugador = rand() % 6 + 1;
	maquina = rand() % 6 + 1;
 
	puts("Turno del usuario: tirando dados..."); //turno del usuario
	sleep(3); //Tiempo de espera
	printf("Valor de la tirada del jugador: %i\n",jugador);
	puts("Turno de la maquina: tirando dados...");
	sleep(5);
	printf("Valor de la tirada de la maquina: %i\n",maquina);
	if(jugador > maquina){
		printf("\nG a n a s t e !\n");
	}
	else if (jugador == maquina){
		printf("\nE m p a t e !\n");
	}else{
		printf("\nP e r d i s t e !\n");
	}
	do{
		seguirJugando();
	}while(continuar == 'S'); // Mientras la respuesta a continuar sea "S"
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por Rodrigo (119 intervenciones) el 11/07/2020 07:05:24
La variable continuar de una function es local y no es la misma variable que otra definida en otra funcion.

Podrias retornar el valor en una funcion y asignarlo en la otra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha disminuido su posición en 3 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por José (14 intervenciones) el 11/07/2020 07:12:57
retorne de su función pero me sigue dando el mismo resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por Rodrigo (119 intervenciones) el 11/07/2020 08:35:15
Puedes mostrar el codigo corregido?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha disminuido su posición en 3 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por José (14 intervenciones) el 11/07/2020 17:07:21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int seguirJugando(){ //Continuar o cerrar el juego
	char continuar;
 
	puts("¿Continuar jugando? (S/N)\n");
	scanf("%c",&continuar);
	continuar = toupper(continuar); // Convierte a mayúsculas el contenido previo de continuar
	getchar();
	switch(continuar){
		case 'S': puts("Volver a jugar\n");
		break;
		case 'N': puts("Esta bien, pero se que volveras, hasta pronto!...\n");
		break;
		default: puts("No entendi tu respuesta asi que seguiremos jugando!.\n");
		continuar = 'S'; // Asigna arbitrariamente el valor de seguir jugando
		break;
	}
	return continuar;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por Rodrigo (119 intervenciones) el 11/07/2020 19:30:39
Si solo corregiste esto, te falta invocarla correspondientemente. Si ya lo hiciste, no lo estas mostrando aqui y no hay manera de saber si lo estas haciendo bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha disminuido su posición en 3 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por Brian (14 intervenciones) el 11/07/2020 20:20:53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void juegaDados(void){
	int jugador, maquina;
	char tirar, continuar;
 
	srand(time(0));
 
	hacerTirada();
	jugador = rand() % 6 + 1;
	maquina = rand() % 6 + 1;
 
	puts("Turno del usuario: tirando dados...");
	sleep(3); //Tiempo de espera
	printf("Valor de la tirada del jugador: %i\n",jugador);
	puts("Turno de la maquina: tirando dados...");
	sleep(5);
	printf("Valor de la tirada de la maquina: %i\n",maquina);
	if(jugador > maquina){
		printf("\nG a n a s t e !\n");
	}
	else if (jugador == maquina){
		printf("\nE m p a t e !\n");
	}else{
		printf("\nP e r d i s t e !\n");
	}
	do{
		seguirJugando();
	}while(continuar == 'S');
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por Rodrigo (119 intervenciones) el 11/07/2020 20:28:37
Efectivamente no lo haces bien aun.
Linea 26, asignale a la variable continuar lo que la funcion retorne.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha disminuido su posición en 3 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por Brian (14 intervenciones) el 11/07/2020 20:57:58
Asigne la variable dentro del parentesis de la invocación del modulo:

1
2
3
do{
	seguirJugando(continuar);
}while(continuar == 'S');
Pero, cuando quiero decirle no a la pregunta ¿continuar jugando?, me aparece el mensaje, pero no cierra el programa como lo deseo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por Rodrigo (119 intervenciones) el 11/07/2020 21:01:28
Eso no debería compilar. Esa no es manera de asignar una variable.

Hazlo asi

1
Variable = funcion();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha disminuido su posición en 3 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con funciones en C

Publicado por Brian (14 intervenciones) el 11/07/2020 21:34:29
Listo, de hecho antes si compilaba y todo, pero como te digo, el programa al decirle no si quiere seguir jugando, no cierra el programa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar