2011-12-16 9 views
3

入力されたモールス符号をテキストに置き換えようとすると、問題が発生します。基本的に問題は、ユーザが「。」を入力すると、プロローグは文字「E」(モールス符号では「。」)を印刷し、その後の他のすべての期間を無視して、2つ以上の連続した期間。モールス符号をテキストにデコードする

どうすれば解決できますか?

これはおそらく非常に初心者の質問ですが、私はこれについて答えを見つけるために一日中苦労してきました。

は、ここでは、コード

public partial class Morsetext : PhoneApplicationPage 
{ 

    public string[] aakkoset = { ".", "A", "B", "C", "D", "E", 
           "F", "G", "H", "I", "J", 
           "K", "L", "M", "N", "O", 
           "P", "Q", "R", "S", "T", 
           "U", "V","W", "X", "Y", 
           "Z", "Ä", "Ö", "0", "1", 
           "2", "3", "4", "5", "6", 
           "7", "8", "9", "?", ":", 
           ",", "@", "/", "=", " ", 
           }; 
    public string[] morse = {".-.-.-", ".-", "-...", "-.-.", "-..", ".", 
           "..-.", "--.", ".... ", "..", ".---", 
           "-.-", ".-..", "--", "-.", "---", 
           ".--.", "--.-", ".-.", "...", "-", 
           "..-", "...-", ".--", "-..-", "-.--", 
           "--..", ".-.-", "---.", "-----", ".----", 
           "..---", "...--", "....-", ".....", "-....", 
           "--...", "---..","----.", "..--..", "---...", 
           "-....-", ".--.-.", "-..-.", "-...-", " ", 
           }; 

    public Morsetext() 
    { 
     InitializeComponent(); 
    } 

    private void bShort_Click(object sender, RoutedEventArgs e) 
    { 
     char piste = '.'; 

     tBoxMorse2.Text += piste.ToString(); 

    } 

    private void tBoxMorse2_TextChanged(object sender, TextChangedEventArgs e) 
    { 

     tBlockText2.Text = tBoxMorse2.Text.ToUpper() 
      .Replace(morse[0],aakkoset[0]) 
      .Replace(morse[1],aakkoset[1]) 
      .Replace(morse[2],aakkoset[2]) 
      .Replace(morse[3],aakkoset[3]) 
      .Replace(morse[4],aakkoset[4]) 
      .Replace(morse[5],aakkoset[5]) 
      .Replace(morse[6],aakkoset[6]) 
      .Replace(morse[7],aakkoset[7]) 
      .Replace(morse[8],aakkoset[8]) 
      .Replace(morse[9],aakkoset[9]) 
      .Replace(morse[10],aakkoset[10]) 
      .Replace(morse[11],aakkoset[11]) 
      .Replace(morse[12],aakkoset[12]) 
      .Replace(morse[13],aakkoset[13]) 
      .Replace(morse[14],aakkoset[14]) 
      .Replace(morse[15],aakkoset[15]) 
      .Replace(morse[16],aakkoset[16]) 
      .Replace(morse[17],aakkoset[17]) 
      .Replace(morse[18],aakkoset[18]) 
      .Replace(morse[19],aakkoset[19]) 
      .Replace(morse[20],aakkoset[20]) 
      .Replace(morse[21],aakkoset[21]) 
      .Replace(morse[22],aakkoset[22]) 
      .Replace(morse[23],aakkoset[23]) 
      .Replace(morse[24],aakkoset[24]) 
      .Replace(morse[25],aakkoset[25]) 
      .Replace(morse[26],aakkoset[26]) 
      .Replace(morse[27],aakkoset[27]) 
      .Replace(morse[28],aakkoset[28]) 
      .Replace(morse[29],aakkoset[29]) 
      .Replace(morse[30],aakkoset[30]) 
      .Replace(morse[31],aakkoset[31]) 
      .Replace(morse[32],aakkoset[32]) 
      .Replace(morse[33],aakkoset[33]) 
      .Replace(morse[34],aakkoset[34]) 
      .Replace(morse[35],aakkoset[35]) 
      .Replace(morse[36],aakkoset[36]) 
      .Replace(morse[37],aakkoset[37]) 
      .Replace(morse[38],aakkoset[38]) 
      .Replace(morse[39],aakkoset[39]) 
      .Replace(morse[40],aakkoset[40]) 
      .Replace(morse[41],aakkoset[41]) 
      .Replace(morse[42],aakkoset[42]) 
      .Replace(morse[43],aakkoset[43]) 
      .Replace(morse[44],aakkoset[44]); 

    } 
+0

醜い構文についてはごめんなさい。私はまだこのことを学んでいる。 –

答えて

2

最も簡単な解決策は、最初の最後のモールス信号文字列を最短する最長のモールス文字列から自分の置き換えを並べ替えることがあるのです。

+0

ありがとう!私はこれをして、今、それは魅力のように働いている! –

7

モールスコードは、dichotomic searchを使用してデコードできます。決定木文は私の目は出血になり、「置き換える」こと

Morse code

+1

parapura rajkumarありがとう!私はこの問題を解決するためにこのチャートに従った。 –

関連する問題