>> Foarte interesant! Dai si tu algoritmul ala de verificare a cnp? S-ar =
>
> trebuie sa caut undeva. ultima cifra se calculeaza ca o combinatie liniara a
> primelor 12 cifre modulo 11, cu mentiunea ca 10 si 0 inseamna 0. tre sa caut
> undeva pe net coeficientii aia.
Eu am algoritmul pe care l-am atasat.
Functioneaza bine.

Daca stie cineva mai multe detalii despre sex si judet, as fi 
recunoscator pentru informatii.


>
>> Pentru problema ta (sau mai bine zis a noastra) dupa cum banuiai poti =
>> incerca ceva cu=20
>> sort -u file1 > file2
>> sort file1 > file3=20
>> Si apoi diff file 3 file 2 > listaneagra
>
> da, asta nu mai tineam minte: diff. mersi, du-te la sediul de campanie al
> da-ului local si bea o bere cand va castiga maimutoiul nostru functia de
> president! apoi te inscrii in pnl, ok?
>
>> Sper ca esti constient ca vei baga la puscarie multi oameni cu treaba =
>
> dosar de urmarire penala + gherla intre 6 luni si 3 ani
>
>> S-auzim numai de bine! Congo cineva?
>
> sa vedem cine, ce si cum. s-ar putea sa ii facem urmasului lui mobutu sese
> seko o administratie bazata pe linux si solutii open source. depinde ce
> faceti peste 2 saptamani.
>
> tibi
> pnl cluj
>
>
> ---
> Detalii despre listele noastre de mail: http://www.lug.ro/
>
>

---
Catalin(ux aka Dino) BOIE
catab at deuroconsult.ro
http://kernel.umbrella.ro/

-- Attached file included as plaintext by Ecartis --
-- File: 1.c

/*
        Description: Validate romanian CNP
        Author: Catali(ux aka Dino) BOIE <catab at umbrella.ro>
*/

#include <stdio.h>



int main (int argc, char *argv []) {
        long suma, rest;
        int     sex, aa, ll, zz, jud;
        int     a1, a2;
        int     l1, l2;
        int     z1, z2;
        int     jud1, jud2;
        int     p10, p11, p12, p13;
        char    *cnp;
        char    *mes = "-";


        if (argc != 2) {
                printf ("Usage: cnp <number>\n");
                return 1;
                }

        cnp = argv [1];
        printf ("Input: %s.\n", cnp);

        sex = cnp [0] - '0';

        a1 = cnp [1] - '0';
        a2 = cnp [2] - '0';
        aa = a1 * 10 + a2;

        l1 = cnp [3] - '0';
        l2 = cnp [4] - '0';
        ll = l1 * 10 + l2;

        z1 = cnp [5] - '0';
        z2 = cnp [6] - '0';
        zz = z1 * 10 + z2;

        jud1 = cnp [7] - '0';
        jud2 = cnp [8] - '0';
        jud = jud1 * 10 + jud2;

        p10 = cnp [9] - '0';
        p11 = cnp [10] - '0';
        p12 = cnp [11] - '0';
        p13 = cnp [12] - '0';

        // teste
        if ((sex < 1) || (sex > 8)) {
                mes = "Sex";
                goto bad;
                }

        if ((ll < 1) || (ll > 12)) {
                mes = "Luna";
                goto bad;
                }

        if ((zz < 1) || (zz > 31)) {
                mes = "Zi";
                goto bad;
                }

        if ((jud > 52) && (jud != 99)) {
                mes = "Judet";
                goto bad;
                }

        suma = 0;
        suma += sex * 2;        /*  1 */
        suma += a1 * 7;         /*  2 */
        suma += a2 * 9;         /*  3 */
        suma += l1 * 1;         /*  4 */
        suma += l2 * 4;         /*  5 */
        suma += z1 * 6;         /*  6 */
        suma += z2 * 3;         /*  7 */
        suma += jud1 * 5;       /*  8 */
        suma += jud2 * 8;       /*  9 */
        suma += p10 * 2;        /* 10 */
        suma += p11 * 7;        /* 11 */
        suma += p12 * 9;        /* 12 */
        printf ("Suma: %d.\n", suma);

        rest = suma % 11;
        if (rest == 10)
                rest = 1;
        printf ("Rest: %d.\n", rest);

        if (rest != p13) {
                mes = "Suma";
                goto bad;
                }

        goto ok;
        
        bad:
        printf ("Cod gresit [%s]!\n", mes);
        return 1;

        ok:
        printf ("Cod bun!\n");
        return 0;
}


--- 
Detalii despre listele noastre de mail: http://www.lug.ro/


Raspunde prin e-mail lui