Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: RiCo9297 en 14 Agosto 2016, 19:51 pm



Título: Pregunta de dudas de ejercicio
Publicado por: RiCo9297 en 14 Agosto 2016, 19:51 pm
Hola buenas me gustaría que alguien me explicase, por que en el tercer modulo comprobarResultado, el número de aciertos no aumenta en el recuento final y el motivo de por que los números aleatorios no son aleatorios realmente por que siempre se me repiten los mismo números.

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  
  5.  
  6. char aQueJugar(char &opcion){
  7. cout << "¿Qué quieres practicar: sumas (+), restas (-) o " <<
  8. " multiplicaciones(*)?: ";
  9. cin >> opcion;
  10. }
  11.  
  12.  
  13. int generarOperacion(char opcion, bool acertada, int numpregunta, int &resultado, int &total){
  14.  
  15. int valor1 = rand() % 20 + 10;
  16. int valor2 = rand() % 20 + 10;
  17. numpregunta = 1;
  18. int numaciertos = 0;
  19. int numfallos = 0;
  20. acertada = true;
  21.  
  22. aQueJugar(opcion);
  23.  
  24. do{
  25. if(opcion == '+'){
  26. cout << "Pregunta" << numpregunta << ":" << endl;
  27. cout << " " << valor1 << endl;
  28. cout << "+" << valor2 << endl;
  29. cout << "------" << endl;
  30. total = valor1 + valor2;
  31. cin >> resultado;
  32. if(resultado == total){
  33. acertada = true;
  34. cout << "Muy bien! Eres un genio!" << endl;
  35. }
  36. else{
  37. acertada = false;
  38. cout << "Oh! Esta no la has acertado" << endl;
  39. }
  40. }
  41. if(opcion == '-'){
  42. cout << "Pregunta" << numpregunta << ":" << endl;
  43. cout << " " << valor1 << endl;
  44. cout << "-" << valor2 << endl;
  45. cout << "------" << endl;
  46. total = valor1 - valor2;
  47. cin >> resultado;
  48. if(resultado == total){
  49. acertada = true;
  50. cout << "Muy bien! Eres un genio!" << endl;
  51. }
  52. else{
  53. acertada = false;
  54. cout << "Oh! Esta no la has acertado" << endl;
  55. }
  56. }
  57. if(opcion == '*'){
  58. cout << "Pregunta" << numpregunta << ":" << endl;
  59. cout << " " <<valor1 << endl;
  60. cout << "*" << valor2 << endl;
  61. cout << "-------" << endl;
  62. total = valor1 * valor2;
  63. cin >> resultado;
  64. if(resultado == total){
  65. acertada = true;
  66. cout << "Muy bien! Eres un genio!" << endl;
  67. }
  68. else{
  69. acertada = false;
  70. cout << "oh! Esta no la has acertado" << endl;
  71. }
  72. }
  73. numpregunta++;
  74. }while(numpregunta <= 5);
  75.  
  76.  
  77. }
  78.  
  79. int comprobarResultado(bool acertada){
  80. acertada = true;
  81. int resultado = 0;
  82. char opcion;
  83. int numpregunta = 1;
  84. int i = 0;
  85. char otravez;
  86. int total = 0;
  87. generarOperacion(opcion, acertada, numpregunta, resultado, total);
  88. cout << "** HAS TERMINADP! **" << endl;
  89. do{
  90. if(resultado == total){
  91. acertada == true;
  92. i++;
  93. }
  94. numpregunta++;
  95. }while(numpregunta <= 5);
  96. cout << "Has acertado " << i << " de " << numpregunta - 1 << " preguntas";
  97. }
  98.  
  99. int main(){
  100. char sino;
  101. char opcion;
  102. bool acertada;
  103. char otravez;
  104. cout << "***************************************" << endl;
  105. cout << "***** BIENVENIDO A LA GINKAMÁTICA *****" << endl;
  106. cout << "***************************************" << endl;
  107. cout << endl;
  108. cout << "¿Quieres jugar conmigo? (s,n): ";
  109. cin >> sino;
  110. if(sino == 's'){
  111. comprobarResultado(acertada);
  112. }
  113. else{
  114. if(sino == 'n'){
  115. cout << "Adios";
  116. }
  117. }
  118. }


Título: Re: Pregunta de dudas de ejercicio
Publicado por: RiCo9297 en 14 Agosto 2016, 19:55 pm
Por cierto soy bastante nuevo en el mundo de la programación lamento mucho si el código esta lleno de desorden y errores de sangrado, gracias por la ayuda.


Título: Re: Pregunta de dudas de ejercicio
Publicado por: AlbertoBSD en 14 Agosto 2016, 20:00 pm
antes de usar cualquier rand ea necesario Inicializar la semilla random esto es:

Código
  1. srand(time(NULL));

solo una vez al inicio del codigo.


Título: Re: Pregunta de dudas de ejercicio
Publicado por: RiCo9297 en 14 Agosto 2016, 20:03 pm
Gracias la ayuda. :)


Título: Re: Pregunta de dudas de ejercicio
Publicado por: ivancea96 en 14 Agosto 2016, 20:06 pm
Es un código algo complicado, con muchas variables. Algunas sobran, o no las suas correctamente, como "opcion" y "otravez".

Luego:
Código
  1. do{
  2. if(resultado == total){
  3. acertada == true;
  4. i++;
  5. }
  6. numpregunta++;
  7. }while(numpregunta <= 5);

resultado y total en ese bucle serán siempre los mismos valores, así que "numpregunta" saldrá siempre siendo o 1 o 5.


Título: Re: Pregunta de dudas de ejercicio
Publicado por: RiCo9297 en 14 Agosto 2016, 20:14 pm
Es un código algo complicado, con muchas variables. Algunas sobran, o no las suas correctamente, como "opcion" y "otravez".

Luego:
Código
  1. do{
  2. if(resultado == total){
  3. acertada == true;
  4. i++;
  5. }
  6. numpregunta++;
  7. }while(numpregunta <= 5);

resultado y total en ese bucle serán siempre los mismos valores, así que "numpregunta" saldrá siempre siendo o 1 o 5.

Vale muchas gracias, voy a ver si consigo arreglar el error