Autor
|
Tema: Pin y contraseña (Leído 3,239 veces)
|
galatea
Desconectado
Mensajes: 1
|
Hola, me piden que genere un pin de 4 digitos sin digitos consecutivos iguales. Tengo este avance para generar un pin...pero A. me salen letras, no se por que; B. No se cómo hacer lo que no tenga dígitos consecutivos iguales. Soy nuevisima en esto...¿me podrán ayudar? (Estoy trabajando con CodeBlocks, no se si eso influye) Muchas Gracias #include<stdio.h> #include<stdlib.h> #include<time.h> char cadena[10]={'0','1','2','3','4','5','6','7','8','9'}; int main() { srand(time(NULL )); //Para que los numeros sean realmente aleatorios int i; //contador char digito[4]; printf("Los 4 caracteres generados aleatoriamente son: "); for(i=0;i<=4;i++) { digito [i ]=cadena [rand() % 50]; //numero aleatorio entre 0 y 35 } return 0; }
MOD: Etiquetas de Código GeSHi para los códigos
|
|
« Última modificación: 26 Junio 2020, 02:41 am por YreX-DwX »
|
En línea
|
|
|
|
Kenji-chan
Desconectado
Mensajes: 104
|
Verás al declarar tu variable char cadena[10]={'0','1','2','3','4','5','6','7','8','9'};
la defines con una longitud de 10 a la vez que la rellenas y cuando haces digito =cadena [rand() % 50]; //numero aleatorio entre 0 y 35
le estás diciendo a digito[0] que es igual a cadena[35] (35 digamos que es el número aleatorio que nos generó en esa iteración) pero anterior mente definimos a cadena con una longitud de 10 a si que cadena[35] está accediendo a un espacio de memoria no definida y dígito no está cambiando su posición en ningún momento (deberías de poner digito )
|
|
|
En línea
|
|
|
|
K-YreX
|
Como ya te han dicho, estás accediendo a posiciones de memoria desconocidas. Además el número aleatorio que generas no está entre 0 y 35 sino entre 0 y 49. Tendrías que hacer que el número aleatorio esté entre 0 y 9 mediante: (rand() % 10).
Otro problema a tener en cuenta es que no generas 4 dígitos mediante el bucle for() sino 5. Desde i = 0 hasta i <= 4 son: {0,1,2,3,4} 5 repeticiones.
Y un consejo extra: no utilices system("pause") para hacer una pausa en el programa. Utiliza getchar() que pertenece a la biblioteca <stdio.h>.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
EmaTomA
Desconectado
Mensajes: 4
|
1 -> char esta declarado fuera de main. 2 -> tienes la cadena con las memorias declaradas, te recomiendo inicializarlas en 0. 3 -> Es normal que te salgan letras, si pides que te imprima un caracter ascii con %c 4 -> La funcion dentro de for no tiene logica. 5 -> para capar un numero aleatorio y caparlo a un maximo usa:
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Contraseña a PDF
Programación Visual Basic
|
jrhomer
|
3
|
1,463
|
17 Junio 2006, 13:24 pm
por jrhomer
|
|
|
no puedo conectarme a una red con contraseña sabiendo la contraseña
Redes
|
phoeboo
|
2
|
5,669
|
24 Junio 2010, 06:47 am
por zhyzura
|
|
|
contraseña del msn
Mensajería
|
xemnas
|
2
|
4,307
|
24 Junio 2011, 12:03 pm
por тαптяα
|
|
|
Contraseña.
Dudas Generales
|
CSDguez25
|
3
|
2,726
|
28 Marzo 2012, 15:09 pm
por CloudswX
|
|
|
Contraseña RAR
Dudas Generales
|
WalterWhite
|
2
|
2,154
|
12 Febrero 2013, 23:26 pm
por #Borracho.-
|
|