LEET - SPEAK Generator

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • LEET - SPEAK Generator

    An ALLE!!!!

    ich weis nicht wie ich im Pascal ein Programm erstellen, kann, dass, wenn ich zum beispiel ein wort eingebe, als solches erkannt wird und das dann jeder buchstabe durch eine beliebige Variable ersetzt wird!

    ich will sozusagen um gleich aufs thema zu kommen ==> einen LEET - SPEAK GENERATOR programmieren!

    PLZ HILFE

    pennywise@twin.at

    gReXx pEnNyWiSe
  • Quellcode

    1. program StrArray;
    2. var
    3. Wort: String (100);
    4. begin
    5. Write ('Bitte geben Sie ein Wort ein: ');
    6. ReadLn (Wort);
    7. WriteLn ('Der erste Buchstabe des Wortes , Wort, lautet: ', Wort[1])
    8. end.


    Dass Wort kann ein eindimensionales Array darstellen, welches aus Zeichen besteht. Mit Wort[1] wird auf das erste Zeichen des Strings zugegriffen. Um auf das letzte Zeichen zuzugreifen, müssten wir Wort[Length (Wort)] schreiben. Später im Buch erfahren Sie, wie man alle Zeichen eines Wortes durchläuft.

    Du kannst dein Wort also Zeichen für Zeichen durchgehen und bestimme Vorkommnisse ersetzen

    Quellcode

    1. var i := 1;
    2. if i < Length (Wort) then
    3. begin
    4. Write (Leet[Wort[i]]);
    5. end


    Bleibt natürlich ein Leet Dictionary zu erstellen, in dem die Zeichen vorkommen.
  • Ich würde mir eine Funktion schreiben die in einem String S alle Zeichenfolgen A durch die Zeichenfolge B ersetzt (ist ganz einfach), wenn du die Funktion hast, ist der Rest einfach.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • alright....thXx ich probs gleich

    //Update
    das mit dem durch zählen hab ich noch nicht ganz verstanden , muss man da nicht zu i immer 1 dazu zählen?

    //Update
    und bei string (100 ) zeigt er einen Fehler an ===< ; fehlt irgendwo

    //Update
    ich checks nicht, plz write the whole programm, mit vier oder fünf angedeuteten Leetspeak variablen...plz...
  • Bitte nutze doch die Möglichkeit deine Einträge zu bearbeiten und poste nicht jeden Satz in nem einzelnen Posting.

    ja, i muss inkrementiert werden

    Quellcode

    1. if i < Length (Wort) then
    2. begin
    3. Write (Leet[Wort[i]]);
    4. i := i+1;
    5. end


    Allerdings spreche ich kein Pascal. Kann es sein, dass Pascal gar keine assoziativen Arrays unterstützt? Dann müsstest du es mit SoMeGuY's Lösung machen.
  • Das Assoziative Array ist eine Sonderform eines Arrays. Es verwendet keinen numerischen Index, sondern einen so genannten Schlüssel zur Indizierung und damit zur Adressierung eines Elements. Idealerweise werden die Schlüssel so gewählt, dass eine für die Programmierer nachvollziehbare Verbindung zwischen Schlüssel und Datenwert besteht.

    Mit Hilfe eines assoziatives Arrays kannst du z.B. so arbeiten:
    Leet["e"] = "3";

    falls es keine gibt, kann man vielleicht den Character in einen Integer konvertieren und auf diese Art arbeiten. Denn Integer als Index sind überall erlaubt.
  • ich schaffs nicht:


    das hab ich jetzt:

    Quellcode

    1. program LEETSPEAK;
    2. uses crt;
    3. var wort : string;
    4. var ar : integer;
    5. var
    6. var Leet : char;
    7. begin
    8. clrscr;
    9. writeln (' Hallo, bitte geben Sie ein Wort ein: ');
    10. writeln;
    11. writeln;
    12. readln(wort);
    13. writeln ('Ihr WORT lautet ', wort ,'!!');
    14. readln;
    15. if ar < length (wort) then
    16. begin
    17. Leet:=('a')= '4'
    18. Leet:=('b')= '8'
    19. Leet:=('c')= '<'
    20. Leet:=('d')= '|)'
    21. Leet:=('e')= '3'
    22. Leet:=('f')= '|ý'
    23. Leet:=('g')= '6'
    24. write (LEET[wort[ar]]);
    25. ar := ar+1;
    26. end;
    27. readln;
    28. end.
    Alles anzeigen
  • Pascal hat keine assoziativen Arrays. Echte assoziative Arrays kenn ich eigentlich nur aus (schwach getypten) Scriptsprachen. In objektorientierten Sprachen gibts manchmal Klassen von Listen oder Tabellen, die das von der Funktionalität her können.

    Zum Problem: Der Kern deines Programm ist eine Funktion zum Ersetzen von Zeichenketten. Wenn du Delphi (größer als Version 4) benutzt gibt es die bereits, deinem Code nach benutzt du aber TurboPascal -> also musst du die selber schreiben.


    "d0nUt" schrieb:

    Mit Hilfe eines assoziatives Arrays kannst du z.B. so arbeiten:
    Leet["e"] = "3";

    Dafür brauchst du kein assoziatives Array, in fast allen Sprachen wird ein Char als Byte abgebildet und bei nur einem Buchstaben braucht man nicht selber umwandeln. Das geht sogar in C so.
    Da du beim Leetspeak aber auch mehrere Zeichen ersetzen (siehe hier) musst (the -> teh, ...ers -> ...0rz) kannst du auch nicht sinnvoll mit soeinem einfachen Array tricksen.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • "pennywise" schrieb:

    hallo,
    kannst du mmir nitte diese Möglickeit auf schreiben?

    würde mich freuen....ich mein das mit dem Leetspeakgenerator....mit s string...



    plz

    ich check jetzt gar nichts mehr

    thXal.....pennywise@twin.at


    Quellcode

    1. function replace_string(S, rplc, wth: String): string;
    2. begin
    3. while (pos(rplc,S)<>0) do
    4. S:= copy(S,0,pos(rplc,S)-1)+wth+copy(S,pos(rplc,S)+length(rplc),length(S));
    5. replace_string:=S;
    6. end;
    7. function leet_generator(txt: string): string;
    8. begin
    9. txt:= replace_string(txt,'e','3');
    10. txt:= replace_string(txt,'i','1');
    11. txt:= replace_string(txt,'the','teh');
    12. txt:= replace_string(txt,'ers','0rz');
    13. txt:= replace_string(txt,'o','0');
    14. leet_generator:=txt;
    15. end;
    Alles anzeigen


    So macht man das. Ist zwar nicht die performanteste Variante, aber die einzig wirklich praktikable. Und bei ein paar tausend Zeichen und nur ein paar wenigen Ersetzungsregeln ist das auch unbedeutend.

    P.S: Das ist eine Ausnahme. Üblicherweise reagiere auch auf PNs, wie "mach mal bitte" nicht :!:
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]