Buenas tengo el siguiente código:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int j1;
int i = 0;
int n;
int vic = 0;
int der = 0;
cin >> n;
for (i = 0; i == n; i++)
{
j1 = 1 + rand() % (51 - 1);
if (j1 > 0 && j1 < 25)
{
vic ++;
}
else
{
der++;
}
}
cout << vic;
cout << endl;
cout << der;
return 0;
}
Pretende generar un numero aleatorio 'n' veces, y dependiendo del rango en el que esté contenido se sumará a las variables 'vic' o 'der'. La cuestión es que siempre me devuelve 0 en ambas. ¿El valor de las variables no se guarda al salir del bucle? En ese caso, ¿cómo sería el programa que planteo? ¿O estoy haciendo algo mal y no me doy cuenta?
Como podreis notar soy muy principante en esto.
Muchas gracias.
Saludos,
- Revisa esta parte:
for (i = 0; i == n; i++)
- No deberías de utilziar i < n o algo así?
Cita de: EdePC en 22 Octubre 2018, 17:32 PM
Saludos,
- Revisa esta parte:
for (i = 0; i == n; i++)
- No deberías de utilziar i < n o algo así?
Sí, efectivamente, pero no lo entiendo. Si 'i < n', para cualqiuer valor de 'i', ¿no debería de finalizar el bucle? Me tengo que repasar el concepto ese desde luego jajaja.
Mientras la condición i < n sea verdadera, las repeticiones seguirán ejecutándose. Cuando la condición no se cumpla (cuando i llegue a ser igual a n), las iteraciones de la sentencia for terminarán.
En la condición:
if (j1 > 0 && j1 < 25)
La primera parte (j1 > 0) no es necesaria, siempre será verdadera debido al rango en el que se generan los números aleatorios.
Ah vale muchas gracias, es que como estoy empezando no conocía el concepto en su totalidad. Cosas de noob :p