Avatar billede steenk Nybegynder
22. maj 2002 - 10:36 Der er 12 kommentarer og
1 løsning

Check af CPR nummer

Jeg leder efter en stump kode (helst java, ellers VB) eller en simpel algoritme, som checker et standard danske CPR-nr (noget med modulus...)
Avatar billede moebius Nybegynder
22. maj 2002 - 10:39 #1
Man sidder nok og kan ikke finde ud af sin makro programmering, var??
Avatar billede cpu-seth Nybegynder
22. maj 2002 - 10:40 #2
Går du også på Ballerup teknisk skole?
Avatar billede steenk Nybegynder
22. maj 2002 - 10:41 #3
Næh, arbejder på et systemprojekt som registrerer patienter...!
Avatar billede moebius Nybegynder
22. maj 2002 - 10:42 #4
Hmm... Vi har ellers lavet en makro som kan check om CPR-nr er gyldige...
Avatar billede moebius Nybegynder
22. maj 2002 - 10:42 #5
Altså, på skolen.
Avatar billede steenk Nybegynder
22. maj 2002 - 10:42 #6
Har ikke brug for at opfinde den dybe t... igen så jagteer lidt hurtig kode-genbrug. Kunne I ikke hjælpe i stedet for blot at kommentere ?
Avatar billede xyborx Nybegynder
22. maj 2002 - 10:42 #7
Måske kan du bruge den her makro (til Word 2000), om jeg skrev som en skole-opgave.

Sub CPRValidering()
'
' CPRValidering Makro
' Makro oprettet 30-04-02 af Jesper N. H.
'
Dim cprnummer As String
Dim gyldighed As String
cprnummer = InputBox$("Indtast CPR-nummer" & vbCrLf & "ddmmåå-lbnr" & vbCrLf & "F.eks." & vbCrLf & "241280-2445")
If (Len(cprnummer) = 11) And Mid(cprnummer, 7, 1) = "-" = True Then
    c1 = (Mid(cprnummer, 1, 1) * 4)
    c2 = (Mid(cprnummer, 2, 1) * 3)
    c3 = (Mid(cprnummer, 3, 1) * 2)
    c4 = (Mid(cprnummer, 4, 1) * 7)
    c5 = (Mid(cprnummer, 5, 1) * 6)
    c6 = (Mid(cprnummer, 6, 1) * 5)
    c8 = (Mid(cprnummer, 8, 1) * 4)
    c9 = (Mid(cprnummer, 9, 1) * 3)
    c10 = (Mid(cprnummer, 10, 1) * 2)
    c11 = (Mid(cprnummer, 11, 1) * 1)
    x1 = Mid(cprnummer, 1, 1)
    x2 = Mid(cprnummer, 2, 1)
    x3 = Mid(cprnummer, 3, 1)
    x4 = Mid(cprnummer, 4, 1)
    x5 = Mid(cprnummer, 5, 1)
    x6 = Mid(cprnummer, 6, 1)
    x8 = Mid(cprnummer, 8, 1)
    x9 = Mid(cprnummer, 9, 1)
    x10 = Mid(cprnummer, 10, 1)
    x11 = Mid(cprnummer, 11, 1)
    sum = c1 + c2 + c3 + c4 + c5 + c6 + c8 + c9 + c10 + c11
    modresultat = sum Mod 11
    If modresultat = 0 Then
        gyldighed = "CPR-nummeret er gyldigt :)"
    Else
        gyldighed = "CPR-nummeret er ikke gyldigt :P"
    End If
    MsgBox ("CPR" & vbTab & "Vægt" & vbTab & "Resultat" & vbCrLf & _
            x1 & vbTab & "x 4" & vbTab & "= " & c1 & vbCrLf & _
            x2 & vbTab & "x 3" & vbTab & "= " & c2 & vbCrLf & _
            x3 & vbTab & "x 2" & vbTab & "= " & c3 & vbCrLf & _
            x4 & vbTab & "x 7" & vbTab & "= " & c4 & vbCrLf & _
            x5 & vbTab & "x 6" & vbTab & "= " & c5 & vbCrLf & _
            x6 & vbTab & "x 5" & vbTab & "= " & c6 & vbCrLf & _
            "-" & vbTab & "-" & vbTab & "-" & vbCrLf & _
            x8 & vbTab & "x 4" & vbTab & "= " & c8 & vbCrLf & _
            x9 & vbTab & "x 3" & vbTab & "= " & c9 & vbCrLf & _
            x10 & vbTab & "x 2" & vbTab & "= " & c10 & vbCrLf & _
            x11 & vbTab & "x 1" & vbTab & "= " & c11 & vbCrLf & vbCrLf & _
            vbTab & "Sum:" & vbTab & sum & vbCrLf & _
            "Mod-resultat:" & vbTab & modresultat & vbCrLf & vbCrLf & _
            gyldighed)
Else
    MsgBox (cprnummer & " er indtastet forkert." & vbCrLf & vbCrLf & "mmddåå-lbnr")
End If
End Sub
Avatar billede moebius Nybegynder
22. maj 2002 - 10:43 #8
JO jo, er på vej...
Avatar billede steenk Nybegynder
22. maj 2002 - 10:43 #9
til moebius:  vil du rykke ud med din makro ?
Avatar billede xyborx Nybegynder
22. maj 2002 - 10:43 #10
Og her er et svar :o)
Avatar billede moebius Nybegynder
22. maj 2002 - 10:44 #11
steenk-> Kommer her:

Sub CPRKontrol()
'
' CPRKontrol Makro
' Makro oprettet 30-04-02 af Carsten - 156
'
Dim cpr As String

cpr = InputBox("Skriv dit CPR-Nr." _
    & vbCrLf & vbCrLf & "Eks.: 15/08/75-2683.")

If Mid(cpr, 3, 1) = "/" And Mid(cpr, 6, 1) = "/" And Mid(cpr, 9, 1) = "-" = True Then

      dd1 = Mid(cpr, 1, 1) * 4
      dd2 = Mid(cpr, 2, 1) * 3
      mm1 = Mid(cpr, 4, 1) * 2
      mm2 = Mid(cpr, 5, 1) * 7
      yy1 = Mid(cpr, 7, 1) * 6
      yy2 = Mid(cpr, 8, 1) * 5
      lb1 = Mid(cpr, 10, 1) * 4
      lb2 = Mid(cpr, 11, 1) * 3
      lb3 = Mid(cpr, 12, 1) * 2
      lb4 = Mid(cpr, 13, 1) * 1
   
      sum = dd1 + dd2 + mm1 + mm2 + yy1 + yy2 + lb1 + lb2 + lb3 + lb4


      If sum Mod 11 = 0 = True Then
            MsgBox "Dit Cpr nummer, " & cpr & " er korrekt. Du kan selv checke det at læse" _
                & " i Word dokumentet!"
                               
        Else
     
          MsgBox "Du har skrevet et invalid Cpr nummer"
       
        End If

      Else
          MsgBox "Er du dum eller hva´? Kan du ik´ Læs´? Skriv det rigtigt man!!!"
       
End If

End Sub
Avatar billede steenk Nybegynder
22. maj 2002 - 10:53 #12
Tak for begge svar!

Til moebius: du missede lige point'ene. Måske hvis du havde svaret før du kommenterede ;-)
Avatar billede sbjerre Nybegynder
16. september 2003 - 15:29 #13
i C#:

private Boolean validateCpr(String cpr)
{
    if(cpr.Length == 11)
    {
        cpr = cpr.Substring(0,6) + cpr.Substring(7,4);
        string N = "432765432";
        int Sum = 0;
        int Remainder = 0;
        int ControlNo = 0;
        for(int x = 0; x < 9; x++)
        {
            Sum += Convert.ToInt32(cpr.Substring(x,1)) * Convert.ToInt32(N.Substring(x,1));
        }
        Remainder = Sum % 11;
        ControlNo = 11 - Remainder;
        if(Remainder == 0)
        {
            ControlNo = 0;
        }
        if(ControlNo == Convert.ToInt32(cpr.Substring(9)))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB