Zum Inhalt springen

18/19 Prozedu entwickeln Abrufcodes generieren


Empfohlene Beiträge

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.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von Whiz-zarD
editiert
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...