skip to main content

kiesler.at

Morsecode mit Hashtable entschlüsseln
updated by rck, 2006-03-25

Aufgabe 4108 von der EPROG-Beispielsammlung handelt vom Entschlüsseln von MORSE-Code. Das ist was praktisches, Morse Code eignet sich zB auch zum unerkannten Lösungsdurchfunken bei Prüfungen.

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

Entmorsen -- wie mache ich aus Morsecode was lesbares?

Mit der Codetabelle ist unser Programm im wesentlichen auch schon fertig. Damit das Entmorsen einfacher klappt, gibt's jetzt noch ein dazupassendes Zwischenstück namens "Entmorsen.java". Es nimmt die Hashtable mit dem Code und einen durch den JAVAs StringTokenizer zerlegten Eingabestring und liefert daraus den Klartext.

der entmorsen-Konstructor

22         public Entmorsen(Hashtable decode) {
23                 this.decode=decode;
24         }

Hier merken wir uns die Dekodier-Tabelle, die wir vom Aufrufer bekommen.

entmorsen()

27         public String entmorse(String s)
28                 throws Exception
29         {
30                 if(s.length() > 100)
31                         throw new Exception("Morsecode darf nur "+
32                                 "höchstens 100 Zeichen lang sein!");
33 
34                 if(!s.startsWith("!"))
35                         throw new Exception("Morsecode muß mit ! "+
36                                 "anfangen!");
37 
38                 StringTokenizer st=new StringTokenizer(s, "!");
39                 String decoded="";
40 
41                 while(st.hasMoreTokens())
42                         decoded += decode.get(st.nextToken());
43 
44                 return(decoded);
45         }

Beschreibung entmorsen()

30-36 Nachdem wir die Fehlerfälle überprüft haben...

38 ...übergeben wir die Eingabe an einen StringTokenizer. Unser Trennsymbol ist, wie in der Angabe verlangt, ein Rufzeichen.

39 in decoded kommt unser Klartext rein

41 wir gehen alle Tokens (=alle durch ! getrennten Wörter) durch...

42 ...und hängen das zum Wort passende Zeichen aus der Hashtable an unseren Klartext an.

44 fertig!

Disclaimer

Eigentlich schlägt die Angabe eine rekursive Lösung vor. Ok, der Morsecode lässt sich recht gut als Binärbaum abbilden, den man traversieren könnte.

Meiner Meinung nach ist die vorliegende Lösung jedoch klarer, besser wiederverwendbar (für ähnliche Aufgabenstellungen) und einfacher zu warten. Wer mag, kann mir gerne eine bessere, rekursive Lösung senden!

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8



RSSComments - Make a comment
The comments are owned by the poster. We are not responsible for its content.
RSSAll Articles
2008, 2007, 2006, 2005, 2004