Cum se verifica Codul Numeric Personal ?
Last Updated: Apr 04 2009 15:07, Started by
Mr_Woppit
, Aug 17 2002 12:37
·
0
#1
Posted 17 August 2002 - 12:37
Cum se verifica autenticitatea codului numeric personal (CNP) ?
Exista diverse programe pe piata (medicale sau de ex. cel in care se face inregistrarea optiunilor la admitere in licee) care verifica acest cod daca este valid sau nu. Chestia asta se face probabil prin una sau 2 cifre de control, dar nu am gasit nimic. Stie careva care este algoritmul ? Multumesc EP |
#2
Posted 18 August 2002 - 11:43
Pot sa-ti trimit in cel mai bun caz programul facut in FOX de la admiterea in liceu.
Poate te ajuta cumva. Si pe mine ma interesaeaza aces lucru. :oK: |
#3
Posted 18 August 2002 - 11:53
daca nu este mare ???? m-ar interesa ... poate merge facut cu Refox ....
EP |
#4
Posted 20 August 2002 - 16:50
Multumiri unui coleg Daniel care m-a ajutat in acest sens:
Se face o suma de 12 produse iar apoi modul 11 si rezulta ultima cifra de control. 1 sex 2 an 3 an 4 luna 5 luna 6 zi 7 zi 8 judet 9 judet 10 ??? 11 ??? 12 ??? 13 control (cea cautata) 10,11,12 cred ca e nr. din registru (daca stie cineva sa ne spuna) si procedura e: CLEA CLOSE ALL SET TALK OFF SET SAFE OFF CODP = SPACE(13) @ 5,5 SAY 'Introduceti CNP (Corect) : ' GET CODP PICT '!!!!!!!!!!!!!' READ =CODPERS(CODP) SET SAFE ON SET TALK ON CLOSE ALL ************ FUNC CODPERS PARA COD SPCOD = COD SSCOD = '279146358279' MVAL = 0 FOR I=1 TO 12 MVAL = MVAL+ VAL(SUBSTR(SPCOD,I,1)) * VAL(SUBSTR(SSCOD,I,1)) ENDF IF (INT(MOD(MVAL,11))=10 .AND. VAL(SUBSTR(SPCOD,13,1))=1) .OR. (INT(MOD(MVAL,11))=VAL(SUBSTR(SPCOD,13,1))) WAIT WIND NOWA 'CNP Corect ' ELSE WAIT WIND NOWA 'CNP Gresit '+STR(INT(MOD(MVAL,11)),2) ENDI :nu: |
#5
Posted 20 August 2002 - 22:41
Este un pas inainte dar nu este corect .. cel putin eu nu reusesc sa le pun cap la cap.
In primul rand ... inteleg ca SPCOD este cnp-ul introdus si verificat, dar SSCOD ce este ? De unde 279146358279 ? Daca presupun ca este acolo doar pentru a face calculele cu pricina, conform formulei de acolo, propriul meu cnp nu se verifica. Deci ? Si apoi modul de calcul ... daca MVAL impartit la 11 este egal cu 10 SI ultima cifra a cnp este 1 SAU valoarea MVAL impartita la 11 este egala cu ultima cifra a cnp , atunci CNP-ul este corect. Daca asta este corecta, atunci modul de calcul al lui MVAL este gresit. Deci, unde este eroarea ? EP |
#6
Posted 21 August 2002 - 17:14
nu prea am inteles explica mai bine cum se calculeaza, in cuvinte, mai sunt si care nu stiu fox :)
|
#7
Posted 21 August 2002 - 18:50
OK
Se da codul 279146358279 care este o constanta si cu care se obtin celelalte. Notam fiecare cifra a acestui cod cu a1, a2, a3, ...a12. Codul nostru personal are 13 cifre. Primele 12 semnificative si a 13-a de control. Il notam b1, b2, ...b12. Facem suma se produse: a1*b1+a2*b2+ ... +a12*b12=N Facem impartirea cu rest N/11=CAT si REST REST este a 13 cifra Dar programelul functioneaza? Salutari. Daca e ceva neclar dau si un desen. Si cateva mii de exemple cu CNP-uri :ciocan: Attached Files |
#8
Posted 21 August 2002 - 20:15
k am inteles 10x ma apuc sa fac un programel in kylix :)
|
#9
Posted 21 August 2002 - 22:30
Quote Dar programelul functioneaza? nu functioneaza ... nu in forma in care este acum ... practic sunt 2 parti separate, iar definirea parametrilor este diferita ... nu conteaza ... algoritmul SE VERIFICA !!! eu am facut ieri testul rapid in Excel, dar faceam rotunjirea gresit. Am verificat si iese. Exista insa 2 solutii corecte conform algoritmului. O data cand restul impartirii este egal cu ultima cifra si a doua cand restul este 10 si ultima cifra este 1. Thx Dorin .... EP |
#10
Posted 21 August 2002 - 23:26
Quote Originally posted by EndLess_Point Exista insa 2 solutii corecte conform algoritmului. O data cand restul impartirii este egal cu ultima cifra si a doua cand restul este 10 si ultima cifra este 1. EP dar daca restul este 10 este egal cu 1 de ex.: 3,10 = 3,1 |
|
#11
Posted 21 August 2002 - 23:43
restul impartirii la 11 a sumei respective, este cateodata 10, adica x,903456 (asta asa ca ex). Daca in acea situatie, ultima cifra a cnp este 1, atunci este corect.
Citeste si tu conditiile : Quote daca MVAL impartit la 11 este egal cu 10 SI ultima cifra a cnp este 1 SAU valoarea MVAL impartita la 11 este egala cu ultima cifra a cnp EP |
#13
Posted 22 August 2002 - 19:56
Da am uitat sa va zic (dar se vede in program) daca restul este 10 atunci scrie 1.
Programelul atasat mai sus functioneaza sigur. Ce crezi ca nu-i bun la el? |
#14
Posted 22 August 2002 - 22:02
Dar codul ala (de fapt codul e un sir de ponderi) care inmulteste fiecare cifra cum l-au ales? Nu pot exista erori de compensare?
|
#15
Posted 23 August 2002 - 00:22
asta ar fi o intrebare ..... de unde au scos 279146358279 ?
EP |
|
#17
Posted 27 August 2002 - 22:03
Ba da, as vrea sa stiu chiar daca voi ramine perplex or something. Mai vreau sa stiu ce inseamna penultimele 3 cifre din CNP? Se poate?
|
#18
Posted 04 September 2002 - 11:14
Am o functie de validare a CNP luata de la Casa Nationala de Asigurari Sanatate
FUNCTION CNP_Valid PARAMETERS Cnp aa = 2 * VAL( SUBSTR( STR( Cnp, 13, 0 ), 1, 1 ) ) bb=7*VAL(SUBSTR(STR(Cnp,13,0),2,1)) cc=9*VAL(SUBSTR(STR(Cnp,13,0),3,1)) dd=1*VAL(SUBSTR(STR(Cnp,13,0),4,1)) ee=4*VAL(SUBSTR(STR(Cnp,13,0),5,1)) ff=6*VAL(SUBSTR(STR(Cnp,13,0),6,1)) gg=3*VAL(SUBSTR(STR(Cnp,13,0),7,1)) hh=5*VAL(SUBSTR(STR(Cnp,13,0),8,1)) ii=8*VAL(SUBSTR(STR(Cnp,13,0),9,1)) jj=2*VAL(SUBSTR(STR(Cnp,13,0),10,1)) kk=7*VAL(SUBSTR(STR(Cnp,13,0),11,1)) ll=9*VAL(SUBSTR(STR(Cnp,13,0),12,1)) cc_teoretic=VAL(SUBSTR(STR(Cnp,13,0),13,1)) tot=(aa+bb+cc+dd+ee+ff+gg+hh+ii+jj+kk+ll) cc_practic=MOD(tot,11) IF cc_practic = 10 cc_practic=1 ENDIF IF LEN(STR(Cnp, 13))<13 RETURN .F. ELSE IF cc_practic <> cc_teoretic RETURN .F. ENDIF ENDIF RETURN .T. Problema este ca am gasit CNP din buletin care nu a fost validat cu functia aceasta. Poate fi scrid gresit in buletin ? |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users