bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online Pe HaiSaRadem.ro vei gasi bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online. Nu ne crede pe cuvant, intra pe HaiSaRadem.ro ca sa te convingi.

Un CNP este alcatuit astfel :


|S| |AA| |LL| |ZZ| |JJ| |ZZZ| |C|
|_| |__| |__| |__| |__| |___| |_|
:     :      :      :     :       :    :
:     :      :      :     :       :    :
:     :      :      :     :       :    --> Cifra de control
:     :      :      :     :       :
:     :      :      :     :       --> Numarul de ordine atribuit persoanei
:     :      :      :     :
:     :      :      :     --> Codul judetului
:     :      :      :
:     :      :      --> Ziua nasterii
:     :      :
:     :      --> Luna nasterii
:     :
:     --> Anul nasterii
:
--> Cifra sexului (M/F) pentru:
1/2 - cetateni romani nascuti intre 1 ian 1900 si 31 dec 1999
3/4 - cetateni romani nascuti intre 1 ian 1800 si 31 dec 1899
5/6 - cetateni romani nascuti intre 1 ian 2000 si 31 dec 2099
7/8 - rezidenti
Persoanele de cetatenie straina se identifica cu cifra "9"


 

Algoritmul de validare al unui cod CNP

Pas preliminar: Se testeaza daca codul respecta formatul unui cod CNP. Adica prima cifra sa fie cuprinsa in intervalul 1 - 6 sau sa fie 9 pentru straini. Urmatoarele sase cifre trebuie sa constituie o data calendaristica valida in formatul AALLZZ.

Pas 1: Se foloseste cheia de testare "279146358279". Primele douasprezece cifre se inmultesc pe rand de la stanga spre dreapta cu cifra corespunzatoare din cheia de testare.

Pas 2: Cele douasprezece produse obtinute se aduna si suma obtinuta se imparte la 11.

Pentru un CNP valid cifra de control va trebui sa coincida cu cifra de pe pozitia treisprezece din CNP-ul initial.


#include
#include
#include
int validare(char *cnp)
{
        int k[12]={2,7,9,1,4,6,3,5,8,2,7,9};//cheia de testeare
        int s=0;
        for(int i=0;i<12;i++)
        {
               s=(s+(cnp[i]-'0')*k[i])%11;
        }
        if(s==10)
               s=1;
        if(s==(cnp[12]-'0'))
               return 1;
        else
               return 0;
}
int an(char *cnp)
{
        int a;
        a=(cnp[1]-'0')*10;
        a+=(cnp[2]-'0');
        if(cnp[0]=='1' || cnp[0]=='2')
               a+=1900;
        if(cnp[0]=='3' || cnp[0]=='4')
               a+=1800;
        if(cnp[0]=='5' || cnp[0]=='6')
               a+=2000;
        return a;
}
int luna(char *cnp)
{
        int l;
        l=(cnp[3]-'0')*10;
        l+=(cnp[4]-'0');
        return l;
}
int ziua(char *cnp)
{
        int z;
        z=(cnp[5]-'0')*10;
        z+=(cnp[6]-'0');
        return z;
}
int lungime(char *cnp)
{
        int i;
        for(i=0;cnp[i]!=NULL;i++);
        return i;
}
char* judet(char *cnp)
{
        char *lista[52]={"Alba","Arad","Arges","Bacau","Bihor","Bistrita-Nasaud","Botosani","Brasov","Braila","Buzau","Caras-Severin","Cluj","Constanta","Covasna","Dambovita","Dolj","Galati","Gorj","Harghita","Hunedoara","Ialomita","Iasi","Ilfov","Maramures","Mehedinti","Mures","Neamt","Olt","Prahova","Satu Mare","Salaj","Sibiu","Suceava","Teleorman","Timis","Tulcea","Vaslui","Valcea","Vrancea","Bucuresti","Bucuresti S.1","Bucureste S.2","Bucureste S.3","Bucureste S.4","Bucureste S.5","Bucureste S.6","Calarasi","Giurgiu"};
        int jud;
        jud=(cnp[7]-'0')*10;
        jud+=(cnp[8]-'0');
        return lista[jud-1];
}
char* sex(char *cnp)
{
        if((cnp[0]-'0')%2==1)
               return "masculin";
        else
               return "feminin";
}
int cifre(char *cnp)
{
        int i;
        for(i=0;cnp[i]!=NULL;i++)
               if(cnp[i]<'0' || cnp[i]>'9')
                      return 0;
        return 1;
}
int data_valida(char *cnp)
{
       int a,z,l;
       a=an(cnp);
       z=ziua(cnp);
       l=luna(cnp);
       if(a%4==0)
       if((z-(a%4==0))>28 && l==2)
               return 0;
        else
        {
               if(l==8 && z>31)
                      return 0;
               else
                      if(z>(l%2==0)+30)
                             return 0;
                      else
                             return 1;
        }
}
int judet_valid(char *cnp)
{
        int j;
        j=(cnp[7]-'0')*10;
        j+=(cnp[8]-'0');
        return j;
}
int preliminar(char *cnp)
{
        if(cifre(cnp) && data_valida(cnp) && judet_valid(cnp) && lungime(cnp)==13)
               return 1;
        else
               return 0;
}
void check_num(int nr)
{
        if(nr<10)
               cout<<"0";
}
void main()
{
       char *cnp;
        cout<<"\nintroduce-ti CNP-ul:";gets(cnp);
        if(preliminar(cnp))
       {
               cout<<"\ndata nasteri: ";check_num(ziua(cnp));cout<<ziua(cnp);
               cout<<":";check_num(luna(cnp));cout<<luna(cnp);
               cout<<":"<<an(cnp);
               cout<<"\njudetul:"<<judet(cnp);
               cout<<"\nsex:"<<sex(cnp);
               if(validare(cnp))
                      cout<<"\nacest CNP este valid";
               else
                      cout<<"\nacest CNP nu este valid";
        }
        else
               cout<<"\nCNP introdus gresit";
        getch();
}