Autor Beitrag
huefte
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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



BeitragVerfasst: So 18.12.05 15:20 
eventuell mit case?

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 18.12.05 15:27 
Was mach High(S)?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 18.12.05 15:33 
user profile iconhuefte hat folgendes geschrieben:
Was mach High(S)?

Steht in der Hilfe.
huefte Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
76 : c := 'W';
33 : c := 'E';
{...}
huefte Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 18.12.05 16:39 
In etwa so?

ausblenden 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 user profile iconraziel: Code- durch Delphi-Tags ersetzt
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 18.12.05 16:58 
Jetzt sieht mein Quellcode so aus:

ausblenden 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

ausblenden 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 user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: So 18.12.05 17:52 
user profile iconhuefte 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? :x

_________________
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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 18.12.05 18:03 
hä?

Leute es geht! Danke für eure Hilfe! Problem ist somit gelöst!
Nochmals Danke