Hola, me gustaría crear un programa que generara contraseñas aleatorias de la longitud seleccionada (entre los caracteres 33 y 125 de la tabla ASCII), el código es el siguiente, pero cuando lo ejecuto, me imprime otros caracteres que no están entre los dos dichos anteriormente, grácias
#include <iostream>
#include <stdlib.h>
using namespace std;
int main () {
int cantidad;
char contrasenya;
cout << "Longitud de la contrasenya: ";
cin >> cantidad;
for (int contador =1 ; contador <= cantidad ; contador++) {
contrasenya = (33+rand() % 125);
cout << contrasenya;
}
return 0 ;
}
(33+rand() % 125);
rand()%125 generará numeros entre 0 y 124... a eso luego le sumas 33... es decir genera numeros entre 33 y 157
Cita de: engel lex en 23 Diciembre 2016, 20:41 PM
(33+rand() % 125);
rand()%125 generará numeros entre 0 y 124... a eso luego le sumas 33... es decir genera numeros entre 33 y 157
Entonces 33 sería la posición y se le sumaría 124 lo que da 157?
Para que lo veas bien:
Cambiamos rand()%125 por X, donde X puede tener un valor entre 0 y 124.
Si haces X + 33 cualquier valor que tenga X se le suman 33 unidades. Por tanto su rango estará en 0 + 33 y 124 + 33, es decir, entre 33 y 157.
Y como podría hacer para limitar el inicio de la contraseña, ¿hay alguna manera?
Gracias.
Ya lo he solucionado, de una manera muy simple, solamente he disminuido el segundo valor (125) en 33 unidades (92) de manera que cuando suma los 33 me da el resultado deseado.