martes, 13 de octubre de 2015

Código para validar cédula en GNU/Linux

Lo que realizaremos en este bloc es compilar un código de verificación si un numero de cédula es correcto o no en GNU/Linux.

Antes de nada debemos tener claro que cual va a ser nuestro algoritmo y nuestro código fuente en parte inferior les dejar el código que yo utilizare.

Para empezar necesitamos conocer cual va a ser nuestra estructura de los parámetros :
                                               (int arg  , char *argv[])
 donde el primer parámetro nos indica que tenemos un numero entero donde nosotros guardaremos cada numero de la cédula, el segundo parámetro es un vector con un puntero sonde se almacenara la posición de cada numero ingresado y los enviara al terminal de Linux.

Ahora lo primero que debemos hacer es abrir Ubunto del GNU/Linux y posteriormente abrir el terminal 

Luego de abrirlo escribiremos el comando para que se abra el editor de texto donde se colocara el código:

gedit verificarcedula.c &


  • gedit es la llamada al editor de texto.
  • verificarcedula.c & es el nombre de nuestra función con extensión .c ya que vamos a llamar a un código que esta escrito en c para GNU/Linux con un espacio en blanco y de ahí el ampersand que significa que se creará dos procesos y un background.



Una vez que escribimos los parámetros se abrirá el editor de texto y escribiremos el código fuente podemos ver que es una venta similar a la que se utiliza con el lenguaje c


En la imagen anterior vemos que existe un return -1 esto nos indica que no fueron ingresados correctamente los datos y por ello no ejecuto el programa, sin embargo al final del código existe un return 0 esto nos indica que por convención en GNU/Linux la ejecución del programa fue exitosa.

Ahora bien escribimos los siguiente comando que nos indica la compilación del programa y si hay algun error nos muestra cual y en que linea se encuentra para corregirla antes de ejecutar:
gcc verificarcedula.c -o codcedula

  • gcc este es un comando de Linux que llama al programa a compilarse
  • verificarcedula es el nombre con el que nosotros guardamos el archivo en la base del GNU/Linux.
  • -o codcedula este comando nos indica que el archivo que nosotros realizamos en el editor de texto se guardara como un archivo ejecutable con el nombre de codcedula que hará que funcione el código para Linux.





Por último escribiremos el siguiente comando:

./codcedula x x x x x x x x x x 

Este nos indica la llamada desde la raiz del directorio al archivo ejecutable, las x son los números o dígitos de la cédula que vamos a comprobar es decir ya ingresamos los datos.
Aquí mismo veremos el resultado.






















CÓDIGO UTILIZADO PARA GNU/Linux
#include <stdio.h>
#include <stdlib.h>
struct verificarcedula
{
int a;
};

int main (int argc, char*argv[])
{
struct verificarcedula Ncedula[10];
int i ;
int suced=0;
int Resced=0;
int Finced=0;

if(argc !=11)
{
printf("Los parametros son incorrectos. Ingrese asi %s 0 0 0 0 0 0 0 0 0 0 ",argv[0]);
return -1;
}

Ncedula[0].a=atoi(argv[1]);
Ncedula[1].a=atoi(argv[2]);
Ncedula[2].a=atoi(argv[3]);
Ncedula[3].a=atoi(argv[4]);
Ncedula[4].a=atoi(argv[5]);
Ncedula[5].a=atoi(argv[6]);
Ncedula[6].a=atoi(argv[7]);
Ncedula[7].a=atoi(argv[8]);
Ncedula[8].a=atoi(argv[9]);
Ncedula[9].a=atoi(argv[10]);

for(i=0;i<9;i++)
{
if(i==0)
{
Ncedula[i].a=Ncedula[i].a*2;
if(Ncedula[i].a>=10)
{
Ncedula[i].a=Ncedula[i].a-9;
}
}

if( (i%2==0) && (i != 0) )
{
Ncedula[i].a=Ncedula[i].a*2;
if(Ncedula[i].a>=10)
{
Ncedula[i].a=Ncedula[i].a-9;
}
}

if( (i%2 != 0) && (i!=0) )
{
Ncedula[i].a=Ncedula[i].a*1;
if(Ncedula[i].a>=10)
{
Ncedula[i].a=Ncedula[i].a-9;
}
}
}

for(i=0;i<9;i++)
{
suced=suced+Ncedula[i].a;
}

if(suced >=20 && suced<=29)
{
Resced=30-suced;
}
if(suced >=10 && suced<=19)
{
Resced=20-suced;
}
if(suced >=30 && suced<=39)
{
Resced=40-suced;
}

Finced=Ncedula[9].a;
if(Resced == Finced)
{
printf("\nTu numero de cedula es correcta\n");
}
if(Resced != Finced)
{
printf("Tu numero de cedula es incorrecta\n");
return 0;

}


No hay comentarios:

Publicar un comentario