Dev - C++ - Ayuda en este Programa

   
Vista:

Ayuda en este Programa

Publicado por Sebastian (2 intervenciones) el 15/10/2015 18:08:52
Hola. Buenas Tardes soy nuevo en el mundo de la programación, quisiera saber si me pueden ayudar a solucionar o a encontrar el error en este codigo, la idea es que la persona dijite R,P o T para jugar pero no se como, no me han explicado esa parte de utilizar caracteres he estado investigando y llegue a esto pero solo me funciona el empate. Lo de asignar un numero a la letra puede que sea un error quiero que porfavor me guien mas no me resuelvan el ejercicio muchas gracias espero su respuesta.


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
89
90
91
92
93
94
95
96
97
98
99
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
void main();
int juego();
void PreguntaFinal()
 
{
cout << "\nDesea jugar otra Partida?\n\n\t1 - Si, borrar pantalla\n\t2 - Si, guardar pantalla\n\t3 - Salir\nEscoja: ";
	int otro;
	cin >> otro;
	if (otro == 1)
	{
		system("cls");
		juego();
	}
	if (otro == 2)
	{
        juego();
	}
	if (otro == 3)
	{
		exit(0);
	}
	if (otro != 1 || 2 || 3)
	{
		cout << "Este numero no es valido\n ";
		PreguntaFinal();
	}
}
int juego()
{
	char letra1,letra2;
	char r, p, t;
 
	r = 1;
	p = 2;
	t = 3;
 
	cout << "\nJugador Numero 1, dijite su movimiento:\n";
	cin >> letra1;
	cout << "\nJugador Numero 2, dijite su movimiento:\n";
	cin >> letra2;
 
	if (letra1==letra2)
	{
		cout << "\nEs un Empate\n";
	}
	if (letra1 == 1 && letra2 == 2 )
	{
		cout << "\nPapel Cubre a Roca\n";
		cout << "\nJugador 2 Gana\n";
	}
	if (letra1 == 2 && letra2 == 1)
	{
		cout << "\nPapel Cubre a Roca\n";
		cout << "\nJugador 1 Gana\n";
	}
	if (letra1 == 1 && letra2 == 3)
	{
		cout << "\nRoca destruye tijeras\n";
		cout << "\nJugador 1 Gana\n";
	}
	if (letra1 == 3 && letra2 == 1)
	{
		cout << "\nPapel Roca destruye tijeras\n";
		cout << "\nJugador 2 Gana\n";
	}
	if (letra1 == 2 && letra2 == 3)
	{
		cout << "\nTijeras Rompe Papel\n";
		cout << "\nJugador 2 Gana\n";
	}
	if (letra1 == 3 && letra2 == 2)
	{
		cout << "\nTijeras Rompe Papel\n";
		cout << "\nJugador 1 Gana\n";
	}
 
PreguntaFinal();
return 0;
}
void main()
{
	cout << system("title Roca-Papel-Tijeras"), system("Color f8");
	cout << "\n******************************************************************\n";
	cout << "\nPrograma Juego Roca-Papel-Tijeras\n";
	cout << " \nTema:Estructuras de Programacion\n";
	cout << "\nBy:16/10/15\n";
	cout << "\n******************************************************************\n";
	cout << "\nJugue en SOLO Mayusculas o SOLO Minusculas\n";
	cout << "\nROCA=R O r\n";
	cout << "\nPAPEL=P o p\n";
	cout << "\nTIJERAS=T o t\n";
	cout << "\n******************************************************************\n";
	juego();
}
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

Ayuda en este Programa

Publicado por agustin (306 intervenciones) el 16/10/2015 11:11:55
Mejor que usar variables r, p, t usa enum para que sea más legible y en vez de usar tantos condicionales sueltos usa más switch y usa if...else if...else ya que en tu código aunque el primer condicional se cumpla probará todos aunque ya sabemos que no se cumplirán. Dentro de un rato le echo un vistazo.
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

Ayuda en este Programa

Publicado por agustin (306 intervenciones) el 16/10/2015 13:38:29
Mira a ver esto:
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
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
 
using namespace std;
 
enum opcion {roca='R',papel='P',tijeras='T'};
 
void main();
int juego();
void PreguntaFinal();
 
void main()
{
	system("title Roca-Papel-Tijeras") << system("Color f8");
	cout << "\n******************************************************************\n";
	cout << "\nPrograma Juego Roca-Papel-Tijeras\n";
	cout << " \nTema:Estructuras de Programacion\n";
	cout << "\nBy:16/10/15\n";
	cout << "\n******************************************************************\n";
	cout << "\nROCA=R O r\n";
	cout << "\nPAPEL=P o p\n";
	cout << "\nTIJERAS=T o t\n";
	cout << "\n******************************************************************\n";
	juego();
}
 
void PreguntaFinal()
{
   int otro;
 
   cout << "\nDesea jugar otra Partida?\n\n\t1 - Si, borrar pantalla\n\t2 - Si, guardar pantalla\n\t3 - Salir\nEscoja: ";
	cin >> otro;
   switch(otro)
   {
      case 1:
		   system("cls");
		   juego();
         break;
 
      case 2:
         juego();
         break;
 
      case 3:
		   exit(0);
         break;
 
      default:
		   cout << "Este numero no es valido\n ";
		   PreguntaFinal();
	}
}
 
int juego()
{
	char letra1,letra2;
   bool primeraPasada=true;
 
   do{
      if(!primeraPasada)
         cout << "\nOpcion introducida no valida\n";
	   cout << "\nJugador Numero 1, dijite su movimiento: ";
	   cin >> letra1;
      letra1=toupper(letra1);
      primeraPasada=false;
   }while(letra1 != 'R' && letra1 != 'P' && letra1 != 'T');
 
   primeraPasada=true;
   do{
      if(!primeraPasada)
         cout << "\nOpcion introducida no valida\n";
      cout << "\nJugador Numero 2, dijite su movimiento: ";
      cin >> letra2;
      letra2=toupper(letra2);
      primeraPasada=false;
   }while(letra2 != 'R' && letra2 != 'P' && letra2 != 'T');
 
   if(letra1 ==letra2){
      cout << "\nEs un Empate\n";
   }else if(letra1 == roca && letra2 == papel ){
      cout << "\nPapel Cubre a Roca\n";
      cout << "\nJugador 2 Gana\n";
   }else if(letra1 == roca && letra2 == tijeras){
      cout << "\nRoca destruye tijeras\n";
      cout << "\nJugador 1 Gana\n";
   }else if(letra1 == papel && letra2 == roca){
      cout << "\nPapel Cubre a Roca\n";
      cout << "\nJugador 1 Gana\n";
   }else if (letra1 == papel && letra2 == tijeras){
      cout << "\nTijeras Rompe Papel\n";
      cout << "\nJugador 2 Gana\n";
   }else if(letra1 == tijeras && letra2 == roca){
      cout << "\nPapel Roca destruye tijeras\n";
      cout << "\nJugador 2 Gana\n";
   }else if(letra1 == tijeras && letra2 == papel){
      cout << "\nTijeras Rompe Papel\n";
      cout << "\nJugador 1 Gana\n";
   }
   PreguntaFinal();
   return 0;
}
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

Ayuda en este Programa

Publicado por Sebastian (2 intervenciones) el 18/10/2015 04:39:33
Que tal asi? Hay muchas cosas que las que pusiste que no entiendo, como bool toupper etc, a mi programa solo le faltaría distinguir mayúsculas y minúsculas como lo puedo hacer?

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "stdafx.h"
#include <iostream>
 
using namespace std;
enum opcion { roca = 'r', papel = 'p', tijeras = 't' };
 
void main();
int juego();
void PreguntaFinal()
 
{
	cout << "\nDesea jugar otra Partida?\n\n\t1 - Si, borrar pantalla\n\t2 - Si, guardar pantalla\n\t3 - Salir\nEscoja: ";
	int otro;
	cin >> otro;
	if (otro == 1)
	{
		system("cls");
		juego();
	}
	if (otro == 2)
	{
		juego();
	}
	if (otro == 3)
	{
		exit(0);
	}
	if (otro != 1 || 2 || 3)
	{
		cout << "Este numero no es valido\n ";
		PreguntaFinal();
	}
}
int juego()
{
	char letra1, letra2;
 
	cout << "\nJugador Numero 1, dijite su movimiento:\n";
	cin >> letra1;
	cout << "\nJugador Numero 2, dijite su movimiento:\n";
	cin >> letra2;
 
		if (letra1 == letra2)
		{
			cout << "\nEs un Empate\n";
		}
		else
		{
			if (letra1 == roca && letra2 == papel)
			{
				cout << "\nPapel Cubre a Roca\n";
				cout << "\nJugador 2 Gana\n";
			}
			else
			{
				if (letra1 == papel && letra2 == roca)
				{
					cout << "\nPapel Cubre a Roca\n";
					cout << "\nJugador 1 Gana\n";
				}
				else
				{
					if (letra1 == roca && letra2 == tijeras)
					{
						cout << "\nRoca destruye tijeras\n";
						cout << "\nJugador 1 Gana\n";
					}
					else
					{
						if (letra1 == tijeras && letra2 == roca)
						{
							cout << "\nRoca destruye tijeras\n";
							cout << "\nJugador 2 Gana\n";
						}
						else
						{
							if (letra1 == papel && letra2 == tijeras)
							{
								cout << "\nTijeras Rompe Papel\n";
								cout << "\nJugador 2 Gana\n";
							}
							else
							{
								if (letra1 == tijeras && letra2 == papel)
								{
									cout << "\nTijeras Rompe Papel\n";
									cout << "\nJugador 1 Gana\n";
								}
								else
								{
									if (letra1 && letra2 != roca || papel || tijeras)
									{
										cout << "\nAlguna letra digitada es incorrecta\n";
									}
								}
							}
						}
					}
				}
			}
		}
 
	PreguntaFinal();
	return 0;
}
void main()
{
	cout << system("title Roca-Papel-Tijeras"), system("Color f8");
	cout << "\n******************************************************************\n";
	cout << "\nPrograma Juego Roca-Papel-Tijeras\n";
	cout << " \nTema:Estructuras de Programacion\n";
	cout << "\nBy:16/10/15\n";
	cout << "\n******************************************************************\n";
	cout << "\nROCA=R O r\n";
	cout << "\nPAPEL=P o p\n";
	cout << "\nTIJERAS=T o t\n";
	cout << "\n******************************************************************\n";
	juego();
}
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

Ayuda en este Programa

Publicado por Thanatos (72 intervenciones) el 19/10/2015 01:03:08
Tienes la respuesta al problema de las mayúsculas y minúsculas en el código que publicó agustin. Para resolverlo, el utilizó la función toupper, porque en su enumeración utilizó letras mayúsculas como valores ('R', 'P' y 'T'). Tu en cambio, utilizaste minúsculas, así que deberías utilizar la función tolower.

Puedes averiguar para que sirven estas funciones, incluso en la wikipedia: toupper, tolower. Ambas funciones están definidas en cctype.

bool, al igual que int y char, es uno de los tipos de datos primitivos de C++
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