2012-05-27 5 views
-6

안녕하세요 저는 SOS 용 공백으로 구분 된 모스 코드를 예 : *** --- *** 있습니다.문자열 줄에서 각 모스 코드를 읽으십시오

각 모스 부호를 읽을 수있는 사람이 있습니까?

잠시 동안 나는 각 모스 부호를 읽을 필요가있는 각 문자를 읽으므로 모스 부호를 다른 문자로 반환하는 다른 방법으로 변수로 전달할 수 있습니다.

+2

표시 할 수 없습니다. –

+0

이 숙제가 있습니까? 있는 경우 태그를 추가하십시오. [this] (http://www.cplusplus.com/forum/general/32210/)에서 btw를 확인하십시오. – demorge

+0

** 당신은 ** 무엇을 시도 했습니까? 왜 실패합니까? – Pierre

답변

0

당신은지도에 모스 코드 및 해당 값을 저장할 수는 이러한 요소를 통해 모스 공간에 문자열, 루프를 분할하고 최종 결과

에 대한지도에서 결과 값을 검색 (그리고 그들을 함께 연결하여)

이가 디코딩 SOS를 보여주는 예입니다 '... --- ...'

#include <string> 
#include <cstring> 
#include <iostream> 
#include <map> 
#include <vector> 


using namespace std; 

vector<string> SplitString (string aString); 
vector<string> SplitString (string aString){ 
    vector<string> vec; 
    char * cstr, *p; 
    string str = aString; 

    cstr = new char [str.size()+1]; 
    strcpy (cstr, str.c_str()); 
    p=strtok (cstr," "); 

    while (p!=NULL){ 
    vec.push_back(p); 
    p = strtok(NULL," "); 
    } 

    delete[] cstr; 
    return vec; 
} 

int main(){ 

    map<string,string> m; 
    m["..."] = "S"; 
    m["---"] = "0"; 


    vector<string> v; 
    string sentence = "... --- ..."; 
    v = SplitString(sentence); 


    vector<string>::iterator it; 

    cout << "Our morse (" << sentence << ") decoded to: "; 
    for (it = v.begin() ; it < v.end(); it++){ 
    cout << m[*it]; 
    } 

    cout << endl; 

    return 0; 
} 
당신이 다른 모스 코드를 입력 할 수 있습니다

가 촬영 한 것이다 나를 너무 많은 시간, 죄송합니다, 사용 SOS 그것은 잘 알려져 있기 때문에. :) 이 예제는 아마도 좋지도 최적화도 권장되지 않습니다. 그것이 당신에게서 더 좋은 생각을 일으킬 것이기를 바라 라.

+0

빠른 답장을 보내 주셔서 감사합니다. 그러나 이미 모스와 관련 영어 편지가 포함 된 트리를 가지고 있습니다. 내 프로그램이 소문자 알파벳 만 인코딩하기 때문에 모스와 대문자 문자열이 있다면. 예를 들어, *** --- *** D *와 같이 출력물이 표시되어야합니다 : sos De 그래서 어떻게 각 모스 부호를 읽고 영어로 변환 할 수 있습니까? –

0

strtok을 사용하여 문자열을 토큰 화하고 공백 문자를 구분 기호로 사용할 수 있습니다.

관련 문제