![]() |
Verschlüsselung Welche Faktoren von 1 bis 100 funktionieren?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
zuerst einmal muss ich sagen, dass ich ein absoluter Delphi-Neuling bin. Ich habe es seit Mitte dieses Jahres im Unterricht in meinem Informatik-Leistungskurs und wusste vorher noch nicht einmal, dass es das gibt. :roll: Ich habe nämlich vorher noch nicht wirklich etwas programmiert, was sehr wahrscheinlich auch der Grund für meine enormen Probleme ist. Es geht bei meiner Hausaufgabe also um eine bestimmte Verschlüsselung. Wir haben die Buchstaben von A bis Z, wobei 1 für A steht, 2 für B, 3 für C und so weiter. Diese Zahlen werden nun mit einem bestimmten Faktor multipliziert, das Ergebnis wird durch 26 geteilt und der Rest (mod 26) stellt dann den neuen Buchstaben dar (bezogen auf die Ordnungszahlen 1-26). Jedoch kommen öfters doppelte Reste vor, das heißt, wenn man 2 (also B) mit dem Faktor 2 multipliziert, kommt als Ergebnis (der Rest) 4 raus: 4/26 = 0 R 4. Wenn ich also alle Ordnungszahlen der Buchstaben mit 2 multipliziere, kommt z.B. eine Doppelung bei dem Buchstaben O. Er hat die Ordnungszahl 15: 15 * 2 = 30 30 / 26 = 1 R 4. Der Faktor 2 ist also ungeeignet für diese Verschlüsselung, da bei dem fertig verschlüsselten Text, zweimal derselbe Buchstabe auftauchen würde, aber er stünde für 2 verschiedene Buchstaben. Nun gilt es, die Faktoren von 1-100 herauszufinden, bei deren Ergebnissen diese Doppelungen vorkommen und sie in einem Memofeld so aufzulisten, dass eine Liste erscheint, die in etwa so aussieht: 1 geht 2 geht nicht 3 geht 4 ... ... ... ... 100 ... Als Ansatz habe ich dieses; ---------------------------------------------------------- procedure TForm1.ButtonDurchgehenClick(Sender: TObject); var Resteanzahl: array [0..25] of longint; Buchstabenordnungszahl: longint; begin for Buchstabenordnungszahl := 0 to 25 do Resteanzahl[Buchstabenordnungszahl] := 0; for Buchstabenordnungszahl := 1 to 26 do inc (Resteanzahl[(Buchstabenordnungszahl * {Faktor}) mod 26]); end; ----------------------------------------------------------- Allerdings weiß ich nicht genau, ob dies richtig ist. Ich hoffe, ich habe mein Anliegen vverständlich genug erklärt und dass ihr einem blutigen Anfänger wie mir helfen könnt. Das Bild zeigt meine Form Gruß Informatik-LK PS: Wir benutzen in der Schule Delphi 6. PPS: Wie kann ich den oben geschriebenen Quelltext-Auszug hier auch so anzeigen lassen, dass es Quelltext ist? |
Re: Verschlüsselung: Welche Faktoren von 1 bis 10 funktionie
Na das sieht doch schon ganz gut aus.
Du musst halt schließlich noch Testen ob in deinem Array überall eine 1 drinn steht. Wenn "Ja" dann geht der Faktor, denn du genommen hast Und dann musst du halt noch eine Schleife um alles packen in welcher du den Faktor als Laufvariable nimmst. Edit: Du schreibst [ delphi] [ /delphi] drumherum (allerdings ohne Leerzeichen) Oder du benutzt oben diesen Button (Delphi-Code) |
Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
Und wenn dir das Theorieverständnis fehlt:
Was du brauchst ist der sog. Euklydische Algorithmus. Mit dem findest du den größten gemeinsamen Teiler (ggt) von zwei Zahlen heraus. Wenn dieser gleich 1 ist, dann sind die beiden Zahlen teilerfremd und es existiert ein inverses Element modulo n. Wenn du willst, kannst du dieses inverse Element dann mit dem erweiterten Euklydischen Algorithmus bestimmen. Mit Hilfe dieses Elements kannst du dann deinen verschlüsselten Text wieder dechiffrieren. |
Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
Erstmal vielen Dank für eure Antworten.
Testen kann ich es, indem ich einen Break auf das vorletzte "end;" setze. Was mir nun fehlt, ist die Verknüpfung zu dem freien Memofeld. Wie kann ich es machen, dass alle Faktoren von 1 bis 100 ausprobiert werden und dann die Ergebnisse aufgelistet werden? Ich habe leider nicht so viel Ahnung.... Und worum soll ich noch eine (for-?)Schleife setzen? |
Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
Ich will ja nicht drängeln, aber ich muss die Hausaufgabe morgen fertig haben...
|
Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
Zitat:
Delphi-Quellcode:
for faktoer:=1 to 100 do
begin //hier dein bisheriger Code //und hier jetzt testen, ob alle Positionen im Array = 1 sind und das Ergebnis im Memo ausgeben. end; Zitat:
|
Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
Wie gesagt, ich habe Delphi vorher noch nie gesehen.
Eigentlich war mein wirkliches Problem, das Ergebnis im Memofeld auszugeben. Ist das schwierig? |
Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
Ausgeben:
Delphi-Quellcode:
Und testen kannst du entweder schon beim Füllen des Arrays (wenn eine Zahl größer 1 ist, hat sich das ganze ja schon erledigt) oder eben hinterher in einer extra Schleife.
memo1.lines.add('Hallo da bin ich');
//oder memo1.lines.add(inttostr(faktor)+' geht nie und nimmer'); Am besten ist du nimmst dazu eine Variable vom Typ Boolean und merkst dir wenn ein ArrayElement größer 1 geworden ist (die Variable kann auch vom Typ Integer sein und du zählst einfach wieviele Elemente <> 1 sind) |
Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
Nee wenn du das Ergebniss hast ist es kein prob weiter zu machen, einfach:
Delphi-Quellcode:
Thorben
Memo1.Lines.Add(Ergebnis); //Du musst ggf das Ergebniss noch umwandeln in ein String
EDIT: Roter kasten 4tw -.- |
Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
Wie gesagt, ich bin ein absoluter Noob. Von daher ist mir auch nicht klar, wie ich "Resteanzahl" vom Typ "Array of String" in "TString" umwandeln kann.
(Ob Informatik-Leistungskurs für mich die richtige Wahl war?) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz