Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Surub autoforant-metric mixt

Lipsa semnal - strategie de marke...

One week meal plan - Pachet

Apometru defect?
 Nelamurire legalitate TVA casa noua

Huawei P20 Lite, ecran negru la a...

Bibelorui, macrameuri si altele

Inventia secolului din Afganistan?
 G84 - pro și contra

Masina de familie,buget 11000-120...

In ce situatii cereti o a doua op...

DigiMobil - IP public?
 Glet de finisaj peste chit acrili...

La multi ani @Passenger001!

La multi ani @barbosa1bis!

La multi ani @MikeSpike!
 

Cum se verifica Codul Numeric Personal ?

- - - - -
  • Please log in to reply
56 replies to this topic

#1
Mr_Woppit

Mr_Woppit

    the last of them..

  • Grup: Super Moderators
  • Posts: 17,834
  • Înscris: 26.11.2001
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
dorin_2k

dorin_2k

    Master Member

  • Grup: Senior Members
  • Posts: 48,456
  • Înscris: 01.12.2001
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
Mr_Woppit

Mr_Woppit

    the last of them..

  • Grup: Super Moderators
  • Posts: 17,834
  • Înscris: 26.11.2001
daca nu este mare ???? m-ar interesa ... poate merge facut cu Refox ....

EP

#4
dorin_2k

dorin_2k

    Master Member

  • Grup: Senior Members
  • Posts: 48,456
  • Înscris: 01.12.2001
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
Mr_Woppit

Mr_Woppit

    the last of them..

  • Grup: Super Moderators
  • Posts: 17,834
  • Înscris: 26.11.2001
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
ing

ing

    Member

  • Grup: Members
  • Posts: 406
  • Înscris: 04.06.2002
nu prea am inteles explica mai bine cum se calculeaza, in cuvinte, mai sunt si care nu stiu fox :)

#7
dorin_2k

dorin_2k

    Master Member

  • Grup: Senior Members
  • Posts: 48,456
  • Înscris: 01.12.2001
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

  • Attached File  cnp.rar   391bytes   190 downloads


#8
ing

ing

    Member

  • Grup: Members
  • Posts: 406
  • Înscris: 04.06.2002
k am inteles 10x ma apuc sa fac un programel in kylix :)

#9
Mr_Woppit

Mr_Woppit

    the last of them..

  • Grup: Super Moderators
  • Posts: 17,834
  • Înscris: 26.11.2001

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
ing

ing

    Member

  • Grup: Members
  • Posts: 406
  • Înscris: 04.06.2002

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
Mr_Woppit

Mr_Woppit

    the last of them..

  • Grup: Super Moderators
  • Posts: 17,834
  • Înscris: 26.11.2001
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

#12
ing

ing

    Member

  • Grup: Members
  • Posts: 406
  • Înscris: 04.06.2002
oK

#13
dorin_2k

dorin_2k

    Master Member

  • Grup: Senior Members
  • Posts: 48,456
  • Înscris: 01.12.2001
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
blackcat

blackcat

    Senior Member

  • Grup: Senior Members
  • Posts: 4,217
  • Înscris: 29.11.2001
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
Mr_Woppit

Mr_Woppit

    the last of them..

  • Grup: Super Moderators
  • Posts: 17,834
  • Înscris: 26.11.2001
asta ar fi o intrebare ..... de unde au scos 279146358279 ?

EP

#16
ing

ing

    Member

  • Grup: Members
  • Posts: 406
  • Înscris: 04.06.2002
n-ai vrea sa stii  :) :) :) :)

#17
blackcat

blackcat

    Senior Member

  • Grup: Senior Members
  • Posts: 4,217
  • Înscris: 29.11.2001
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
brotundu

brotundu

    New Member

  • Grup: Members
  • Posts: 14
  • Înscris: 28.04.2002
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate