Gusop Geschrieben 9. Juni 2020 Geschrieben 9. Juni 2020 Guten Tag, ich komme leider überhaupt nicht weiter mit der folgenden Aufgabe. Es soll ein Abrufcode generiert werden, jeder soll einzigartig sein. Stelle Inhalt 1 - 2 SQ 3 - 10 acht Zufallsziffern aus dem Bereich 1 bis 9 11 und 12 zweistellige Prüfzahl, soll folgende Bedingung genügen: (Quersumme der Stellen 3 bis 10 + Prüfzahl) modulo 97 =1 Bsp. SQ 12345678 56 SQ Präfix, 8 Zufallsziffern, zweistellige Prüfzahl Aufgabe: Prozedur entwickeln, die einen Abrufcode generiert, der den oben aufgeführten Kreterien entspricht. Folgende Funktionen sollen verwendet werden: ZufallszifferErzegen():Integer = Erzeugt Zufallsziffer aus dem Bereic 1-9 AbrufcodeFinden(String):Boolean = Überprüft ob der übergebene Abrufcode bereits existiert. Stellen Sie den Algorithmus der Prozedur AbrufcodeGenerieren() in Pseudocode oder im Sturktogramm oder PAP dar. Pseudocode: //Alle Variablen praefix = "SQ" array = [] achtZiffern pruefzahl abrufcode //8 Zahlen wiederhole 8 mal: zahl = ZufallszifferErzeugen() zahl zu string umwandeln zahl zu array hinzufügen Inhalt Array zusammenfügen in achtZifffern speichern //Prüfzahl Prüfzahl generieren Modulo Check in prüfzahl speichern //Alle String Variablen zusammenfügen abrufcode = praefix + achtZiffern + prüfzahl Ich verstehe die zweistellige Prüfzahl nicht. (Quersumme der Stellen 3 bis 10 + Prüfzahl) modulo 97 =1 Quersumme ist ja Bsp. von 24 2+4=6. Quersumme der Stellen 3 bis 10? 3+4+6+7+8+9+10 = 47 ?? Dazu soll eine Prüfzahl addiert werden. Ich soll mir die Prüfzahl ausdenken, sagen wir mal 5 + 47 = 52 modulo 97 = 1, ich verstehe, dass 10 modulo 97 = 7 ist, aber wüsste nicht wie ich alle Zahlen bis 97 finde, die bei Modulo 1 haben. Dürfte auch nicht wichtig sein für die Aufgabe. Daraus könnte man leicht ein Pseudocode schreiben, jedoch verstehe ich den mittleren Teil mit der Quersumme nicht. Danke für eure Zeit. Zitieren
Whiz-zarD Geschrieben 9. Juni 2020 Geschrieben 9. Juni 2020 (bearbeitet) Ist das Beispiel "SQ 12345678 56" richtig? Es gibt nur eine Bedingung, damit x MOD 97 = 1 ergibt: Es ist das vielfache von 97 + 1. ((0 * 97) + 1) MOD 97 = 1 ((1 * 97) + 1) MOD 97 = 1 ((2 * 97) + 1) MOD 97 = 1 ((3 * 97) + 1) MOD 97 = 1 ... Also müsste die Quersumme + Prüfzahl 98 ergeben. 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36 98 - 36 = 62 Wie man auf die 56 kommt, ist mir schleierhaft. Bearbeitet 9. Juni 2020 von Whiz-zarD editiert Zitieren
Whiz-zarD Geschrieben 9. Juni 2020 Geschrieben 9. Juni 2020 vor 42 Minuten schrieb Gusop: ich verstehe, dass 10 modulo 97 = 7 ist Nein, 10 MOD 97 ist 10. Modulo gibt immer den Rest einer Division zurück. Also: 1 / 97 = 0 Rest 1 1 MOD 97 = 1 10 / 97 = 0 Rest 10 10 MOD 97 = 10 97 / 97 = 1 Rest 0 97 MOD 97 = 0 98 / 97 = 1 Rest 1 98 MOD 97 = 1 Zitieren
Zaphod42 Geschrieben 10. Juni 2020 Geschrieben 10. Juni 2020 Der Beispielcode der Aufgabe ist SQ3457619756 (nicht SQ1234567856) 3 + 4 + 5 + 7 + 6 + 1 + 9 + 7 = 42 Deine Prüfzahl ist immer 98 - [Quersumme der Stellen 3-10] 98 - 42 = 56 Gusop und Whiz-zarD reagierten darauf 2 Zitieren
Whiz-zarD Geschrieben 10. Juni 2020 Geschrieben 10. Juni 2020 Also lag ich mit meiner Vermutung richtig, dass das Beispiel nicht richtig sein kann. Zitieren
Gusop Geschrieben 11. Juni 2020 Autor Geschrieben 11. Juni 2020 Entschuldigt die Verwirring mit dem falschen Beispiel. Danke Euch. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.