Uträkning av kontrollsiffra för EAN13 streckkoder. (Manus)

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1

Håller på med en funktion för att skapa streckkoder av typen EAN13. Ett delmoment är att generera den 13 siffran i koden som är en kontrollsiffra baserat på de första 12 siffrorna. Jag har gjort en egen funktion för denna uträkning.

Tänkte dela med mig av koden - kanske har någon annan nytta av den.
Se bifogad FileMaker fil.

Om jag inte missminner mig så kan man kolla checksiffran i personnummer så här;

10 PRINT "Ange personnummer utan sista siffra" : INPUT I$
20 FOR I=1 TO 9
30 M=(1-M)+1
35 L=M*VAL(STR$(I$,I,1)VAL(I$))
37 IF L>9 Then L=L-9
40 K=K+L
50 NEXT I
PRINT I$;(10-VAL(STR$(K),2,1)

Vad man gör är att multiplicera varje siffra med antingen 2 eller 1 växelvis (Inled med 2).
Sedan multiplicerar man samman det resultatet med varje siffra i turordning

671014-489 ställs upp så här

6 7 1 0 1 4 4 8 9
2 1 2 1 2 1 2 1 2

12 7 3 0 2 4 8 8 18

Sista raden summeras; men om varje delprodukt är tvåsiffrig (>9) så delar man på det 12 blir 1+2 och detta motsvaras matematiskt med att man drar ifrån 9

12 + 7 + 3 +0 +2 +4 +8 + 8 +18 blir

1+2 + 7 + 3 +0 +2 +4 +8 + 8 +1+8 =

15+29 = 44

Sedan tar man närmaste hela tiotal, subraherar resultatet.

50-44=6

För datorn är det enklare att ta 10-värdet på den andra siffran i 44; 10-4 =6

Bra partytrick va?

  • Medlem
  • Stockholm
  • 2011-04-09 09:23
Ursprungligen av Goflorp:

Om jag inte missminner mig så kan man kolla checksiffran i personnummer så här;

10 PRINT "Ange personnummer utan sista siffra" : INPUT I$
20 FOR I=1 TO 9
30 M=(1-M)+1
35 L=M*VAL(STR$(I$,I,1)VAL(I$))
37 IF L>9 Then L=L-9
40 K=K+L
50 NEXT I
PRINT I$;(10-VAL(STR$(K),2,1)

Vad man gör är att multiplicera varje siffra med antingen 2 eller 1 växelvis (Inled med 2).
Sedan multiplicerar man samman det resultatet med varje siffra i turordning

671014-489 ställs upp så här

6 7 1 0 1 4 4 8 9
2 1 2 1 2 1 2 1 2

12 7 3 0 2 4 8 8 18

Som jag har lärt mig räkna på pnr så är din 1:a uppställning riktig med x2, x1 vartannat tal.

Men sen adderar man bara svaren som ental där 14 = 1+4 = 5 för de tal som överstiger 9. Sista siffran i svaret = sista siffran i p nr.

Om udda = man, jämn = kvinna. Enligt den uppställningen får jag en 3:a i ditt pn. exempel = man - ditt svar påstår att det är en kvinna?

  • Medlem
  • 2011-04-08 23:30

Varför blir 1 x 2 = 3 första gången och 1 x 2 = 2 andra gången?

  • Medlem
  • Norrköping
  • 2011-04-09 12:22

Det är 9:e siffran i p-nr som visar om det är en man eller kvinna, inte kontrollsiffran.

När jag räknar samman blir det 44.
Första blir 6 x 2 som blir 12 och då skall summeras som 1+2, vilket är enklare lösa på datorn som att man minskar med 9 (12-9=3).

Könssiffran är som sagt nästa sista modulo 2.

1
Bevaka tråden