Visa ett inlägg
Oläst 2012-10-04, 23:20 #9
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
ska man vara riktigt petig så metoden funkar oavsett längd på indatat så ska den se ut så här:

Pseudocode:
Kod:
begin function getChecksiffra(text siffror) returns text 
    integer summa = 0
    integer paritet = siffror.length mod 2
    for (integer index = siffror.length to 0 step -1)
        integer siffervärde = value(siffror[index])
        // varannan gångras med 2 och varannan med 1...
        siffervärde = siffervärde * (((index+paritet) mod 2) +1) 
        if (siffervärde>9)
            summa += siffervärde-9
            summa += siffervärde mod 10
        else
            summa += siffervärde 
        endif
    end for
    text checksiffra = chr(10 - (summa mod 10))
    return checksiffra // som text
end function

text nr = "811218987"
text personnummer = nr + getChecksiffra(nr)
print "Personnummer: " + String.Format("999999-9999",personnummer))
// Personnummer: 811218-9876
Conny Westh är inte uppkopplad   Svara med citatSvara med citat