Modulo 10 Berechnung: in for Schlaufe keine Resultatausgabe
Hallo
Ich habe mir die Berechung der Prüfziffer im Mosulo 10 rekursive erstellt.
Mein Problem ist, dass ich den Wert der Variablen Ueb nach der Berechnung in der Schlaufe auslesen kann.
Wenn ich die Variblenberechung ohne Schlaufe rechne funktioniert alle.
Hat jemand eine Idee warum dies so ist?
"//Qr-Referenzcode Prüfziffer Berechnung
// nach Modulo 10 rekursiv";
let CodeoPz := text("21000000000313947143000901"); -> Test Referenznummer ohne Prüfziffer
var Ueb := 0;
let Mod10 := "0946827135";
let endstr := number(length(CodeoPz)) - 1;
for i in range(0, endstr) do
var Ziffer := number(substr(CodeoPz, i, 1));
var Pos := (Ziffer + Ueb) % 10;
var Ueb := number(substr(Mod10, Pos, 1));
void
end;
CodeoPz + text(Ueb % 10) -> vollständige Referenznummer mit Prüfziffer
Danke für euere Hilfe.
Gruss
Markus
4 Antworten
-
Sorry haben sich einige Schreibfeheler eingeschlichen.
Müsste heissen:
Ich habe mir die Berechung der Prüfziffer im Modulo 10 rekursiv erstellt.
Mein Problem ist, dass ich den Wert der Variablen Ueb nach der Berechnung in der Schlaufe nicht auslesen kann.
-
In der Schlaufe erstellst du eine neue Variable mit dem gleichen Namen. Und am Ende ziehst du dir wieder die vom Anfang.
Also einfach in der Schlaufe das "var" Keyword weglassen.
Dann sieht das so aus:
let CodeoPz := text("21000000000313947143000901");
var Ueb := 0;
let Mod10 := "0946827135";
let endstr := number(length(CodeoPz)) - 1;
for i in range(0, endstr) do
var Ziffer := number(substr(CodeoPz, i, 1));
var Pos := (Ziffer + Ueb) % 10;
Ueb := number(substr(Mod10, Pos, 1));
end;Iteration: 0, Pos: 2, Ziffer: 2, Ueb: 4
Iteration: 1, Pos: 5, Ziffer: 1, Ueb: 2
Iteration: 2, Pos: 2, Ziffer: 0, Ueb: 4
Iteration: 3, Pos: 4, Ziffer: 0, Ueb: 8
Iteration: 4, Pos: 8, Ziffer: 0, Ueb: 3
Iteration: 5, Pos: 3, Ziffer: 0, Ueb: 6
Iteration: 6, Pos: 6, Ziffer: 0, Ueb: 7
Iteration: 7, Pos: 7, Ziffer: 0, Ueb: 1
Iteration: 8, Pos: 1, Ziffer: 0, Ueb: 9
Iteration: 9, Pos: 9, Ziffer: 0, Ueb: 5
Iteration: 10, Pos: 5, Ziffer: 0, Ueb: 2
Iteration: 11, Pos: 5, Ziffer: 3, Ueb: 2
Iteration: 12, Pos: 3, Ziffer: 1, Ueb: 6
Iteration: 13, Pos: 9, Ziffer: 3, Ueb: 5
Iteration: 14, Pos: 4, Ziffer: 9, Ueb: 8
Iteration: 15, Pos: 2, Ziffer: 4, Ueb: 4
Iteration: 16, Pos: 1, Ziffer: 7, Ueb: 9
Iteration: 17, Pos: 0, Ziffer: 1, Ueb: 0
Iteration: 18, Pos: 4, Ziffer: 4, Ueb: 8
Iteration: 19, Pos: 1, Ziffer: 3, Ueb: 9
Iteration: 20, Pos: 9, Ziffer: 0, Ueb: 5
Iteration: 21, Pos: 5, Ziffer: 0, Ueb: 2
Iteration: 22, Pos: 2, Ziffer: 0, Ueb: 4
Iteration: 23, Pos: 3, Ziffer: 9, Ueb: 6
Iteration: 24, Pos: 6, Ziffer: 0, Ueb: 7Das Ergebnis von CodeoPz + text(Ueb % 10) ist also 210000000003139471430009017
-
In der Schlaufe erstellst du eine neue Variable mit dem gleichen Namen. Und am Ende ziehst du dir wieder die vom Anfang.
Also einfach in der Schlaufe das "var" Keyword weglassen.
Dann sieht das so aus:
let CodeoPz := text("21000000000313947143000901");
var Ueb := 0;
let Mod10 := "0946827135";
let endstr := number(length(CodeoPz)) - 1;
for i in range(0, endstr) do
var Ziffer := number(substr(CodeoPz, i, 1));
var Pos := (Ziffer + Ueb) % 10;
Ueb := number(substr(Mod10, Pos, 1));
end;Iteration: 0, Pos: 2, Ziffer: 2, Ueb: 4
Iteration: 1, Pos: 5, Ziffer: 1, Ueb: 2
Iteration: 2, Pos: 2, Ziffer: 0, Ueb: 4
Iteration: 3, Pos: 4, Ziffer: 0, Ueb: 8
Iteration: 4, Pos: 8, Ziffer: 0, Ueb: 3
Iteration: 5, Pos: 3, Ziffer: 0, Ueb: 6
Iteration: 6, Pos: 6, Ziffer: 0, Ueb: 7
Iteration: 7, Pos: 7, Ziffer: 0, Ueb: 1
Iteration: 8, Pos: 1, Ziffer: 0, Ueb: 9
Iteration: 9, Pos: 9, Ziffer: 0, Ueb: 5
Iteration: 10, Pos: 5, Ziffer: 0, Ueb: 2
Iteration: 11, Pos: 5, Ziffer: 3, Ueb: 2
Iteration: 12, Pos: 3, Ziffer: 1, Ueb: 6
Iteration: 13, Pos: 9, Ziffer: 3, Ueb: 5
Iteration: 14, Pos: 4, Ziffer: 9, Ueb: 8
Iteration: 15, Pos: 2, Ziffer: 4, Ueb: 4
Iteration: 16, Pos: 1, Ziffer: 7, Ueb: 9
Iteration: 17, Pos: 0, Ziffer: 1, Ueb: 0
Iteration: 18, Pos: 4, Ziffer: 4, Ueb: 8
Iteration: 19, Pos: 1, Ziffer: 3, Ueb: 9
Iteration: 20, Pos: 9, Ziffer: 0, Ueb: 5
Iteration: 21, Pos: 5, Ziffer: 0, Ueb: 2
Iteration: 22, Pos: 2, Ziffer: 0, Ueb: 4
Iteration: 23, Pos: 3, Ziffer: 9, Ueb: 6
Iteration: 24, Pos: 6, Ziffer: 0, Ueb: 7Das Ergebnis von CodeoPz + text(Ueb % 10) ist also 210000000003139471430009017
-
Hallo Benjamin
Danke für den Tipp. Ich ahbe vor lauter Bäume den. Wald nicht mehr geshen.
Gruss
Markus
Content aside
- vor 4 JahrenZuletzt aktiv
- 4Antworten
- 575Ansichten