2012-05-06 4 views
-9

C++에서 한 단어의 각 문자 반복 수를 찾는 방법을 알고 있습니까? 예를 들어 단어는 MISSISSIPPI입니다.각 문자의 반복 횟수

M - 1

I - 4

S - 4

P - 2

답변

2

사용지도 ... 대문자/소문자와 구두점을 돌보는 여부를 직접 선택/다른 기호.

+1

왜지도를? 벡터는 충분해야합니다. – skywall

+1

글쎄, 벡터도 잘 작동해야합니다, 나는지도가 좋아요, 그럼 그걸 어디에 넣을지를 다룰 필요가 없습니다. 그를 위해 모든 것을 정리할 것입니다. – Martol1ni

+0

생성 된 인덱스에 액세스 할 때부터 (기본값은 '0'으로) 초기화되므로'if/else'가 필요하지 않습니다. 그래서'charCount [c] ++'로 충분합니다. – Default

6

이것은 거의 숙제이기 때문에 전반적인 그림 만 제공합니다.

확실히, 각 가능한 문자에 대해 하나씩 벡터를 만드십시오 (영어로 말하기 때문에 26 위치 벡터로 충분할 것입니다). 모든 위치를 0으로 초기화하십시오.

문자열 전체를 실행하여 각 문자에 대해 읽고있는 문자열의 위치에있는 문자에 해당하는 벡터에 각 위치에 하나씩 추가합니다. 예를 들어 'a'를 읽는 경우 1을 첫 번째 위치로 합칩니다. a 'b'의 경우 두 번째 위치에 1을 더합니다. 걱정하지 마세요. 대문자와 소문자는 신경 쓰지 않아도됩니다.

문자열 끝에 도달 했습니까? 벌금. 이제 벡터 전체를 실행하고 각각의 0이 아닌 위치에 대한 카운트를 보여줍니다. 해당 문자를 옆에 넣을 수 있습니다.

모든 간단한 글자는 ASCII/Latin1/UTF- *의 알파벳순으로되어 있으므로 'a'는 해당 글자의 번호를 알려줍니다. (x - 'a')는 벡터에서 문자의 위치를 ​​알려줍니다. 정확한 가치가 무엇인지 궁금하지 마십시오. 휴대용이 아닙니다.

+1

감사합니다. 아니, 숙제가 아니야! 나는 C++에 익숙하지 않아서 그런 작업을하는 법을 알고 싶다. 나는 신참이다. – Jane

+0

이해가 실제로 필요한 것일 경우, 나는 기꺼이 도와주었습니다. – Baltasarq

-1

난 당신이 이런 식으로 뭔가를 시도 할 수 있습니다 생각 :

#include <iostream> 
#include <cstring> 

int main() 
{ 
    const int N = 26;//number of characters in the alphabet 
    int count[N]; 
    char *str = "MISSISSIPPI"; 

    for (int i = 0; i < N; i++) count[i] = 0; 
    for (int i = 0; i < strlen(str); i++) 
    { 
     if (str[i] >= 'a' && str[i] <= 'z') 
      ++count[str[i]-'a']; 
     else if (str[i] >= 'A' && str[i] <= 'Z') 
      ++count[str[i] - 'A']; 

    } 
    for (int i = 0; i < N; i++) 
     cout << (char)('a'+i) << " - " << count[i]; 

    return 0; 
} 
+0

문자열에 A..Z, a..z가 아닌 문자가 포함 된 경우 오류가 발생합니다. –

+0

배열을 256 개로 구성 할 수 있습니다. –

+0

예, 또는 ctypes.h에서'isalpha()'를 사용할 수 있습니다. 히스토그램을 업데이트하기 전에 캐릭터를 확인하십시오. 코드가 아주 좋은 프로그래밍 예제는 아니지만 그렇듯이. –