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