2013-12-13 2 views
0

나는 C++을 배우면서 문제를 해결하고있다. 번호를 다른쪽으로 옮겨서 사용자가 입력 한 텍스트를 정렬하는 프로그램을 만들어야합니다. 예를 들어C++ 숫자를 한쪽으로 옮기고 다른 글자를 다른 글자로 옮기기

: - : I는 알파벳 순서로 텍스트를 정렬하는 프로그램을 만들기 위해 관리 ".! aBcdeFGHiKl 1312890"

! "G. Hi8Kl90 a13Bc1de2F"문자열이 처럼 보일 것입니다. 몇 가지 지침을 원합니다. 나는 모든 문자 (문자 또는 숫자)를 확인하고 다른 문자열로 이동해야한다고 생각하지만 정확히 어떻게 만드는지 확신 할 수 없다.

#include <iostream> 
#include <string> 
#include <algorithm> 



using namespace std; 
int main() 
{ 
    string str1; 
    cout << " Hi user! \n" 
     "Imput some mess here: \n"; 
    cin >> str1; 

    sort(str1.begin(), str1.end()); 
    cout << "Now it's not a mess : \n" << str1 << endl; 


    system("pause"); 

    return 0; 
} 
+0

정렬 기능을 세 번째 매개 변수로 추가하기 만하면됩니다. 비교기는 문자가 대소 문자를 구분하지 않고 문장 부호가 뒤 따르고 숫자가 마지막이되도록 정렬해야합니다. –

답변

0

아래 코드는 원하는대로 수행해야합니다. 가능한 한 원래 코드를 거의 변경하지 않았습니다.

주력 기능은 move_digits_to_right입니다. 주어진 문자가 숫자인지 확인하는 cctype 라이브러리의 isdigit 함수를 사용합니다. 그렇다면 digitVec 벡터에 추가하고, 그렇지 않으면 벡터를 nonDigitVec 벡터에 추가합니다. 마지막에는 원래 문자열의 모양 순서를 유지하면서 숫자가 아닌 문자로 시작하는 문자열을 반환합니다.

main 함수 내에서 cin >> str1 행을 getline(cin, str)으로 변경했습니다. 그렇지 않은 경우, 예를 들어 "a13Bc1de2F G.! Hi8Kl90" 입력의 경우 "a13Bc1de2F" 부분 만 str1으로 읽습니다. getline(cin, str)을 사용하면 전체 입력 행을 읽을 수 있습니다.

#include <iostream> 
#include <string> 
#include <cctype> 
#include <vector> 

using namespace std; 

string move_digits_to_right(const string& s) 
{ 
    vector<char> digitVec, nonDigitVec; 
    int len = (int) s.size(); 
    for (int i = 0; i < len; i++) { 
     if (isdigit(s[i])) { 
      digitVec.push_back(s[i]); 
     } else { 
      nonDigitVec.push_back(s[i]); 
     } 
    } 
    return string(nonDigitVec.begin(), nonDigitVec.end()) + 
      string(digitVec.begin(), digitVec.end()); 
} 

int main() 
{ 
    string str1, output; 
    cout << " Hi user! \n" 
     "Imput some mess here: \n"; 
    getline(cin, str1); 

    output = move_digits_to_right(str1); 
    cout << "Now it's not a mess : \n" << output << endl; 

    system("pause"); 

    return 0; 
} 
+0

와우, 그게 빠르 네요, 특히 "cctype"라이브러리를 가리키고 "getline"을 가리켜 주셔서 감사합니다. 이제는 더 읽을만한 것들이 있습니다. –

+0

동료 프로그래머를 도우려고 항상 기쁘다. 행복한 학습! – yanhan

관련 문제