Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
using namespace std;


char aQueJugar(char &opcion){
cout << "¿Qué quieres practicar: sumas (+), restas (-) o " <<
" multiplicaciones(*)?: ";
cin >> opcion;
}


int generarOperacion(char opcion, bool acertada, int numpregunta, int &resultado, int &total){

int valor1 = rand() % 20 + 10;
int valor2 = rand() % 20 + 10;
numpregunta = 1;
int numaciertos = 0;
int numfallos = 0;
acertada = true;

aQueJugar(opcion);

do{
if(opcion == '+'){
cout << "Pregunta" << numpregunta << ":" << endl;
cout << " " << valor1 << endl;
cout << "+" << valor2 << endl;
cout << "------" << endl;
total = valor1 + valor2;
cin >> resultado;
if(resultado == total){
acertada = true;
cout << "Muy bien! Eres un genio!" << endl;
}
else{
acertada = false;
cout << "Oh! Esta no la has acertado" << endl;
}
}
if(opcion == '-'){
cout << "Pregunta" << numpregunta << ":" << endl;
cout << " " << valor1 << endl;
cout << "-" << valor2 << endl;
cout << "------" << endl;
total = valor1 - valor2;
cin >> resultado;
if(resultado == total){
acertada = true;
cout << "Muy bien! Eres un genio!" << endl;
}
else{
acertada = false;
cout << "Oh! Esta no la has acertado" << endl;
}
}
if(opcion == '*'){
cout << "Pregunta" << numpregunta << ":" << endl;
cout << " " <<valor1 << endl;
cout << "*" << valor2 << endl;
cout << "-------" << endl;
total = valor1 * valor2;
cin >> resultado;
if(resultado == total){
acertada = true;
cout << "Muy bien! Eres un genio!" << endl;
}
else{
acertada = false;
cout << "oh! Esta no la has acertado" << endl;
}
}
numpregunta++;
}while(numpregunta <= 5);


}

int comprobarResultado(bool acertada){
acertada = true;
int resultado = 0;
char opcion;
int numpregunta = 1;
int i = 0;
char otravez;
int total = 0;
generarOperacion(opcion, acertada, numpregunta, resultado, total);
cout << "** HAS TERMINADP! **" << endl;
do{
if(resultado == total){
acertada == true;
i++;
}
numpregunta++;
}while(numpregunta <= 5);
cout << "Has acertado " << i << " de " << numpregunta - 1 << " preguntas";
}

int main(){
char sino;
char opcion;
bool acertada;
char otravez;
cout << "***************************************" << endl;
cout << "***** BIENVENIDO A LA GINKAMÁTICA *****" << endl;
cout << "***************************************" << endl;
cout << endl;
cout << "¿Quieres jugar conmigo? (s,n): ";
cin >> sino;
if(sino == 's'){
comprobarResultado(acertada);
}
else{
if(sino == 'n'){
cout << "Adios";
}
}
}
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:

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 (cpp) [Seleccionar]
do{
if(resultado == total){
acertada == true;
i++;
}
numpregunta++;
}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
Cita de: 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 (cpp) [Seleccionar]
do{
if(resultado == total){
acertada == true;
i++;
}
numpregunta++;
}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