2011-12-16 8 views
3

입력 된 모스 코드를 텍스트로 바꾸려고 할 때 문제가 발생합니다. 기본적으로 문제는 사용자가 "."을 입력하면 prorgram이 문자 "E"(모스 부호에서 ".")를 인쇄하고 그 이후의 다른 모든 마침표를 무시하고 둘 이상의 연속 된 다른 문자를 작성한다는 것입니다 미문.모스 코드를 텍스트로 디코딩

어떻게 해결해야합니까?

나는 이것이 아마도 초보자 용 질문 인 것을 알고 있지만, 나는 이것을 위해 하루 종일 고민하고 있습니다.

여기에 코드

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 감사합니다! 이 차트를 따라 문제를 해결했습니다. –

관련 문제