C/Visual C - ahorcado

 
Vista:
sin imagen de perfil

ahorcado

Publicado por Jose (13 intervenciones) el 19/12/2016 21:54:26
Buenas tardes gente.

Tengo un problema, tengo que hacer un ahorcado con las siguientes variables. Se que es basico, pero sigo teniendo errores, y quiero afianzar bien el tema. Dejo las variables y abajo el codigo que hice para ver si me pueden dar una mano porque no me doy cuenta de los errores que hice.


1.palabraSecreta: se pide que un jugador ingrese una palabra a adivinar. La misma se
debe leer por teclado sin tener en cuenta espacios en blanco, tabulaciones o saltos de
línea.

2.letrasElegidas: se deben guardar las letras que el jugador utiiza para encontrar la palabra
secreta para asegurarnos que no se repita la letra elegida. Para esto tenemos un array
de char con un máximo de 27 letras.

3.cantidadIntentos: se debe iniciar en 0 y, se incrementa cada vez que se propone una
letra que no está en la palabraSecreta. Cuando su valor llega a 7 se termina el juego
habiendo perdido el jugador que intentaba adivinar.

4.palabraDescubierta: esta palabra debe tener la longitud de la palabraSecreta e, inicial-
mente, debe estar formada por guiones. En la medida que se vayan proponiendo letras
que existan en la palabraSecreta se deben ir develando en palabraDescubierta.
Ejemplo: si palabraSecreta es "cohete", inicialmente palabraDescubierta va a ser "——".
Si se propusiera la letra e, palabraDescubierta pasaría a ser: "—e-e".


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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(){
	char c, longit, *palabraSecreta,*palabraDescubierta, *letra, *letrasElegidas;
	int i,cantidadIntentos=0,succ=0;
 
	letrasElegidas=malloc(sizeof(char)*27);
 
	printf("Ingrese longitud: ");
	scanf("%d",&longit);
 
	palabraSecreta=malloc(sizeof(char)*longit);
 
	printf("Elija palabra: ");
	for (i = 0;(c=getchar())!=EOF && c!='\n'; ++i)
	{
		palabraSecreta[i]=c;
	}
 
	palabraDescubierta=malloc(strlen(palabraSecreta)*sizeof(char));
	for (i = 0; i < strlen(palabraSecreta); ++i)
	{
		palabraDescubierta[i]='-';
	}
 
	letra=malloc(sizeof(char));
 
	while(cantidadIntentos<7){
		printf("Ingrese letra: ");
		scanf("%s",letra);
 
		verificarLetra(letrasElegidas,letra);
 
		for (i = 0; i < strlen(palabraSecreta); ++i)
		{
			if (strcmp(palabraSecreta[i],letra)==0)
			{
				palabraDescubierta[i]=letra;
				succ=1;
			}
		}
 
		if (succ != 1)
		{
			cantidadIntentos++;
		}
 
		if (strcmp(palabraSecreta,palabraDescubierta)==0)
		{
			printf("Adivinaste\n");
			break;
		}
	}
}
 
 
void verificarLetra(char *s, char *l){
	int i,esta=0;
	for (i = 0; i < strlen(s); ++i)
	{
		if (strcmp(s[i],l)==0)
		{
			printf("La letra ya fue probada, pruebe otra: ");
			scanf("%s", l);
			verificarLetra(s,l);
			esta=1;
		}
	}
 
	if(esta == 0){
		s[i]=l;
	}
}


Desde ya muchas gracias
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
sin imagen de perfil

ahorcado

Publicado por Jose (13 intervenciones) el 20/12/2016 17:02:43
Por si alguien lo leyo e intento hacerlo o algo, lo pude hacer. Dejo el codigo abajo por si a alguien le sirve.

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
79
80
81
82
83
84
85
86
87
88
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int verificacion(char *letrasElegidas, char *letra);
 
int main(){
	int cantidadIntentos=0, i, longit, succ=0, ver;
	char  c, *palabraSecreta, *palabraDescubierta, *letra, letrasElegidas[27];
 
	printf("Ingrese la longitud de la palabra a adivinar: ");
	scanf("%d",&longit);
 
	palabraSecreta=(char *)malloc(longit*sizeof(char)+1);
 
	letra=(char *)malloc(sizeof(char)+1);
 
	palabraDescubierta=(char *)malloc(longit*sizeof(char)+1);
 
	for (i = 0; i < longit; ++i)
	{
		palabraDescubierta[i]='-';
	}
 
	printf("Ingrese la palabra a adivinar: ");
 
	c=getchar();
 
	for (i = 0; ((c=getchar())!='\n') && (c!=' ') && (c!='\t') && (i<longit) ; ++i)
	{
		palabraSecreta[i]=c;
 
	}
 
	while(cantidadIntentos<7){
 
		printf("Ingrese letra: ");
		scanf("%s", letra);
 
		ver = verificacion(letrasElegidas, letra);
 
		for (i = 0; i < longit; ++i)
		{
			if (palabraSecreta[i]==*letra)
			{
				palabraDescubierta[i]=*letra;
				succ=1;
			}
		}
 
		if (succ!=1)
		{
			cantidadIntentos++;
			printf("Vuelve a intentarlo, te quedan %d intentos\n", (7-cantidadIntentos));
		}
 
		if (strcmp(palabraSecreta,palabraDescubierta)==0)
		{
			printf("Adivinaste la palabra\n");
			break;
 
		} else {
			printf("%s ", palabraDescubierta);
			printf("\n");
		}
	succ=0;
	}
}
 
int verificacion(char *letrasElegidas, char *letra){
	int i,esta=0;
	for (i = 0; i < strlen(letrasElegidas); ++i)
	{
		if (letrasElegidas[i]==*letra)
		{
			printf("La letra ya fue probada, pruebe otra: ");
			scanf("%scanf", letra);
			esta=1;
			verificacion(letrasElegidas,letra);
			return 0;
		}
	}
 
	if(esta == 0){
		letrasElegidas[i]=*letra;
		return 1;
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de FELIPE

ahorcado

Publicado por FELIPE (2 intervenciones) el 05/01/2017 20:28:35
Aprobado, es excelente este juego. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar