Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa con error

Estas en el tema de Programa con error en el foro de C/C++ en Foros del Web. Estoy aprendiendo C++ por mí mismo, y me he tropezado con esta piedra en mi camino. El programa funciona en sí mismo por un simple ...
  #1 (permalink)  
Antiguo 17/04/2011, 11:50
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Programa con error

Estoy aprendiendo C++ por mí mismo, y me he tropezado con esta piedra en mi camino. El programa funciona en sí mismo por un simple uso del switch, y una ciclo do... while, que debe reiniciar el programa si escribes "s" y cerrarlo si "n". El programa funciona bien sin el ciclo, así que me gustaria que me ayudaseis con el ciclo.



#include <iostream>
//Este programa tiene que preguntar unos datos y te dice una carta.
bool repetir(bool s, bool n, bool repetir)
{
char respuesta;
bool repetir;
using namespace std;
cout << "¿Quieres realizar más búsquedas?" << endl;
cin >> respuesta;
if(respuesta ==s)
repetir=true;
if(respuesta ==n)
repetir =false;

return repetir;
}

void main()
{
int palo;
int carta;
bool repeticion;


do
{
std::cout << "Introduce el palo" << std::endl << " 1-bastos\n 2-oros\n 3-copas\n 4-espadas\n";
std::cin >> palo;
std::cout << "\nIntroduce el numero de la carta\nDel 1 al 13\n";
std::cin >> carta;
std::cout << "\n";
switch ( carta )
{
case 1 : std::cout << "As de";break;
case 2 : std::cout << "Dos de";break;
case 3 : std::cout << "Tres de";break;
case 4 : std::cout << "Cuatro de";break;
case 5 : std::cout << "Cinco de";break;
case 6 : std::cout << "Seis de";break;
case 7 : std::cout << "Siete de";break;
case 8 : std::cout << "Ocho de";break;
case 9 : std::cout << "Nueve de";break;
case 10 : std::cout << "Diez de";break;
case 11 : std::cout << "Jota de";break;
case 12 : std::cout << "Reina de";break;
case 13 : std::cout << "Rey de";break;
default : std::cout << " Numero no existente";break;
}
switch ( palo )
{
case 1 : std::cout << " bastos.\n\n\n\n\n";break;
case 2 : std::cout << " oros.\n\n\n\n\n";break;
case 3 : std::cout << " copas.\n\n\n\n\n";break;
case 4 : std::cout << " espadas.\n\n\n\n\n";break;
default : std::cout << " Palo no existente\n";break;
}
bool repetir(bool s, bool n, bool repetir);
bool repeticion=repetir;



}
while(repeticion &= true);

}
  #2 (permalink)  
Antiguo 18/04/2011, 02:47
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 10 meses
Puntos: 89
Respuesta: Programa con error

¿Por que acepta tres parámetros la función repetir? No necesitas ninguno.
La llamada a la función sería repeticion = repetir(); no como lo estás haciendo, ya que estas asignando el valor del parámetro repetir, pero no lo que devuelve la función.
  #3 (permalink)  
Antiguo 21/04/2011, 23:30
 
Fecha de Ingreso: octubre-2010
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 2
Busqueda Revisa bien ahora

Opino lo mismo que el usuario de arriba. No necesitas ningún parametro en la función repetir, si te fijas no has usado ninguna de las funciones declaradas dentro de la función.

Estás llamando mal a la función, y usando demasiado el std:: esto lo simplificas escribiendo using namespace std; después de incluir iostream.

RESULTADO:

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. //Este programa tiene que preguntar unos datos y te dice una carta.
  4. bool repetir()
  5. {
  6. char respuesta;
  7. bool repetir;
  8. cout << "¿Quieres realizar más búsquedas?" << endl;
  9. cin >> respuesta;
  10. if(respuesta =='s')
  11. repetir=true;
  12. if(respuesta =='n')
  13. repetir =false;
  14.  
  15. return repetir;
  16. }
  17.  
  18. int main() //Te recomiendo que declares a main com int siempre
  19. {
  20. int palo;
  21. int carta;
  22. bool repeticion;
  23.  
  24.  
  25. do
  26. {
  27. cout << "Introduce el palo" << endl << " 1-bastos\n 2-oros\n 3-copas\n 4-espadas\n";
  28. cin >> palo;
  29. cout << "\nIntroduce el numero de la carta\nDel 1 al 13\n";
  30. cin >> carta;
  31. cout << "\n";
  32. switch ( carta )
  33. {
  34. case 1 : cout << "As de";break;
  35. case 2 : cout << "Dos de";break;
  36. case 3 : cout << "Tres de";break;
  37. case 4 : cout << "Cuatro de";break;
  38. case 5 : cout << "Cinco de";break;
  39. case 6 : cout << "Seis de";break;
  40. case 7 : cout << "Siete de";break;
  41. case 8 : cout << "Ocho de";break;
  42. case 9 : cout << "Nueve de";break;
  43. case 10 : cout << "Diez de";break;
  44. case 11 : cout << "Jota de";break;
  45. case 12 : cout << "Reina de";break;
  46. case 13 : cout << "Rey de";break;
  47. default : cout << " Numero no existente";break;
  48. }
  49. switch ( palo )
  50. {
  51. case 1 : cout << " bastos.\n\n\n\n\n";break;
  52. case 2 : cout << " oros.\n\n\n\n\n";break;
  53. case 3 : cout << " copas.\n\n\n\n\n";break;
  54. case 4 : cout << " espadas.\n\n\n\n\n";break;
  55. default : cout << " Palo no existente\n";break;
  56. }
  57. repeticion=repetir();
  58. }while(repeticion);
  59. /* Si la función repetir devuelve true no es necesario decir repeticion == true, solo se pasa el valor y ya*/
  60.  
  61. }

Última edición por Gobix; 21/04/2011 a las 23:58

Etiquetas: booleana, c++, programa, reiniciar, ciclos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:46.