Un simple generador de contraseñas por darkbouser

Iniciado por darkbouser, Noviembre 28, 2013, 03:24:58 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 28, 2013, 03:24:58 AM Ultima modificación: Febrero 08, 2014, 05:36:35 PM por Expermicid
Acabo de hacer un generador de contraseñas de 4 dígitos tomadas como base de una cédula de identidad (documento de identificación en Venezuela) pero puede ser cualquier número de 8 dígitos. Esta elaborado de acuerdo a unas especificaciones que tiene comentado antes de las librerías de C.

Código: c
 
/* Dada una cedula de identidad, genere una clave de cuatro digintos, formada de acuerdo a las siguientes reglas:
1) El digito de las unidades en la clave sera el digito menos significativo del resultado de sumar los digitos mas y menos
significativos de la cedula de identidad.
  2) El digito de las decenas en la clave sera el resto de dividir entre 9 a la suma de todos los digitos de la cedula
3) El digito de las centenas de la clave sera el resto de dividir entre 7 a la suma de los digitos pares exisitentes en la cedula
4) El digito de las unidades de mil en la clave será el digito mas significativo del resultado obtenido al multiplicar
todos los digitos, diferentes de cero, de la cedula de identidad */
#include <stdio.h>
#include <stdlib.h>


void cedula(int ci[10])
{
for(int i=1; i <= 8; i++)
{
printf("\n Ingrese el %i numero de la ci\n", i);
scanf("%i", &ci[i]);
}
}

void Mostrar(int ci[10])
{

   printf("\n La cedula de indentidad ingresada es:\n");
   for(int i =1; i <= 8; i++)
   {
    printf("%i", ci[i]);
   }
   printf("\n");
   system("pause");
}

void unidades(int ci[10], int *uni)
{
*uni = ci[1] + ci[8];
}

void decena(int ci[10], int *dec)
{
   int aux=0;
   for(int i=1; i <= 8; i++)
   {
    aux = aux + ci[i];
   }
   
   *dec = aux % 9;
}

void centenas(int ci[10], int *cen)
{
int aux =0;

for(int i= 1; i <= 8; i++)
{
if (ci[i] % 2 == 0)
{
aux = aux + ci[i];
}
}

*cen = aux % 7;
}

void UnidadMil(int ci[10], int *um)
{

int aux = 1;
int aux2 = 0;

for(int i=1; i <= 8; i++)
{
if ( ci[i] != 0)
{
aux = aux * ci[i];
}
}



while(aux > 0)
{
   aux2 = aux % 10;
aux = aux /10; 
}

//le devuelve a la variable um el valor de la cifra mas significativa

*um = aux2;


}

main()
{
int ci[10]={0}, uni=0, dec=0, cen=0, um=0;

cedula(ci);
Mostrar(ci);
unidades(ci, &uni);
decena(ci, &dec);
centenas(ci, &cen);
UnidadMil(ci, &um);

//se imprime el resultado

printf("\n La contraseña generada es:\n");
printf("%i%i%i%i",um, cen, dec, uni);
system("pause");

//FIN DEL PROGRAMA
}


Saludos.