Autor |
Beitrag |
huefte
Hält's aus hier
Beiträge: 8
|
Verfasst: So 18.12.05 15:10
Hi!
Zunächst muss ich sagen, dass ich ne schlechte Lehrerin in Info habe und dass daher meine Kenntnisse nicht weitreichend sind.
Wir sollten uns einen Verschlüsselungsalgorithmus überlegen. Hab ich auch gemacht. Die Buchstaben werden nach nem bestimmten Prinzip vertauscht. Das alles geht nicht nur mit einzelnen Wörtern, sondern auch mit ganzen Texten.
Damits nicht zu einfach wird, will ich noch die Buchstaben in Zahlen umwandeln!
Also eigentlich will ich, dass jeder Buchstaben des Alphabets durch zwei Zaheln ersetzt wird:
Zum Beispiel
"W" --> 76
"E" --> 33
"I" --> 34
"H" --> 13
"N" --> 29
"A" --> 89
"C" --> 76
"H" --> 13
"T" --> 46
"E" --> 33
"N" --> 29
Das Wort "WEIHNACHTEN" würde - rein zahlenmäßig - verschlüsselt also so aussehen:
7633341329897613463329
Kann mir jemand sagen, wie ich das am einfachsten mache? Und dann brauch ich noch ne Umkehrfunktion zum Umwandeln der Zahl in das Wort bzw. den Text!?!?
Schon mal danke im Vorraus
Gruß Pascal
|
|
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 18.12.05 15:20
eventuell mit case?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| function verschluesseln(s: string):string; var c: char; sout: string; zahl,i: Integer;
begin sout := ''; for i:= 0 to High(s) do begin c := s[i]; case c of 'W' : zahl := 76; 'E' : zahl := 33: end; sout := sout + IntToStr(zahl); end; result := sout; end; |
|
|
huefte 
Hält's aus hier
Beiträge: 8
|
Verfasst: So 18.12.05 15:27
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 18.12.05 15:33
huefte hat folgendes geschrieben: | Was mach High(S)? |
Steht in der Hilfe.
|
|
huefte 
Hält's aus hier
Beiträge: 8
|
Verfasst: So 18.12.05 15:41
Naja, aus der englischen erklärung werd ich nun nicht ganz schlau.
Habs jetzt anstatt mit High(s) mit Length(s) gemacht und es funktioniert alles!
|
|
huefte 
Hält's aus hier
Beiträge: 8
|
Verfasst: So 18.12.05 15:52
Es geht soweit also. Hab jetzt versucht die Umkehrfunktion dazu zu basteln, bekomms aber nicht irgendwie nicht hin! Kann mir jemand helfen bzw. sagen wie die aussieht, wenn die ursprüngliche Funktion die oben genannte ist?
|
|
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 18.12.05 16:32
Genauso. bloß die Funktion muss noch dem Inputstring die zweizffrigen einzelwerte rauschneiden (zB mit copy) und diese wandelst du dann wieder mit deiner case tabelle um:
Delphi-Quelltext 1: 2: 3:
| 76 : c := 'W'; 33 : c := 'E'; |
|
|
huefte 
Hält's aus hier
Beiträge: 8
|
Verfasst: So 18.12.05 16:39
In etwa so?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| function entschluesseln(z : String):string; var zahl: Integer; sout,w: string; i: Integer; begin sout := ''; for i:= 1 to length(z) do begin zahl := StrToInt(w); case zahl of 99 : w := ' '; 11 : w := 'a'; 12 : w := 'b'; end; sout := sout + w; end; result := sout; Form1.Edit4.Text:=result; end; |
Wie gesagt, ich hab nicht so viele Kenntnisse, dazu kommt noch , dass ich krank bin und nicht richtig denken kann!
Es wär halt wichtig, wenns gehn würde.
Nochmals vielen Dank für die Mühen!
Moderiert von raziel: Code- durch Delphi-Tags ersetzt
|
|
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 18.12.05 16:42
Ja. Du musst halt nur w definieren, indem du da immer zwei zahlen aus deinem 293423574359349-string rauspackst.
|
|
huefte 
Hält's aus hier
Beiträge: 8
|
Verfasst: So 18.12.05 16:45
aha. und wie soll ich das machen? du hast was von copy geschrieben! die funktion kenn ich nicht
|
|
huefte 
Hält's aus hier
Beiträge: 8
|
Verfasst: So 18.12.05 16:58
Jetzt sieht mein Quellcode so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| function entschluesseln(z : String):string; var zahl: Integer; sout,w: string; i,h: Integer; begin sout := ''; for i:= 1 to length(z) do begin w:=z[2*i-1]+z[2*i]; zahl := StrToInt(w); case zahl of 99 : w := ' '; 11 : w := 'a'; 12 : w := 'b'; end; sout := sout + w; end; result := sout; Form1.Edit4.Text:=result; end; |
Geht das?Die schleife dürfte doch nur bis length(z)/2 laufen. Oder irre ich mich da?
Wenn ich es starte und 11 eingeben, sollte er mir "a" auswerfen, aber es kommt ne Fehlermeldung:
Project d_zahl.dpr raised exception class EConvertError with message "
EDIT:
Wenn ich die Zahlen einstellig verschlüssele , also
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| w:=z[i]; zahl := StrToInt(w); case zahl of 9 : w := ' '; 1 : w := 'a'; 2 : w := 'b'; end; |
dann geht es! Aber nur dann!
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: So 18.12.05 17:52
huefte hat folgendes geschrieben: | Hi!
Zunächst muss ich sagen, dass ich ne schlechte Lehrerin in Info habe und dass daher meine Kenntnisse nicht weitreichend sind.
...Gruß Pascal |
Wer legt das denn fest? 
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
huefte 
Hält's aus hier
Beiträge: 8
|
Verfasst: So 18.12.05 18:03
hä?
Leute es geht! Danke für eure Hilfe! Problem ist somit gelöst!
Nochmals Danke
|
|