Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verschlüsselung Welche Faktoren von 1 bis 100 funktionieren? (https://www.delphipraxis.net/103758-verschluesselung-welche-faktoren-von-1-bis-100-funktionieren.html)

Informatik-LK 21. Nov 2007 12:33


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?

sirius 21. Nov 2007 13:05

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)

Chewie 21. Nov 2007 13:11

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.

Informatik-LK 21. Nov 2007 15:56

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?

Informatik-LK 21. Nov 2007 18:18

Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
 
Ich will ja nicht drängeln, aber ich muss die Hausaufgabe morgen fertig haben...

sirius 21. Nov 2007 18:25

Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
 
Zitat:

Und worum soll ich noch eine (for-?)Schleife setzen?
Na um alle 100 Faktoren durchzu testen
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:

Ich will ja nicht drängeln, aber ich muss die Hausaufgabe morgen fertig haben...
Du hast den Leistungskurs gewählt (seit wann gibts denn eigentlich Info als Leistungskurs?). Ich würde sagen, du musst dich noch ganz schön reinknieen.

Informatik-LK 21. Nov 2007 18:40

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?

sirius 21. Nov 2007 19:05

Re: Verschlüsselung Welche Faktoren von 1 bis 100 funktionie
 
Ausgeben:
Delphi-Quellcode:
memo1.lines.add('Hallo da bin ich');
//oder
memo1.lines.add(inttostr(faktor)+' geht nie und nimmer');
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.
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)

Thorben_Ko 21. Nov 2007 19:06

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:
Memo1.Lines.Add(Ergebnis); //Du musst ggf das Ergebniss noch umwandeln in ein String
Thorben

EDIT: Roter kasten 4tw -.-

Informatik-LK 21. Nov 2007 19:38

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 02:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz