0

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

null
    • Megge
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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.

    • Benjamin_Kromer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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: 7

    Das Ergebnis von CodeoPz + text(Ueb % 10) ist also 210000000003139471430009017

    • Benjamin_Kromer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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: 7

    Das Ergebnis von CodeoPz + text(Ueb % 10) ist also 210000000003139471430009017

    • Megge
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Benjamin

    Danke für den Tipp. Ich ahbe vor lauter Bäume den. Wald nicht mehr geshen.

    Gruss

    Markus