Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 포인터로 문자열의 모음 개수를 세는 프로그램 구현하기

C++에서 문자열에 포함된 모음(a, e, i, o, u)의 개수를 세려면 문자열 전체를 한 글자씩 확인해야 합니다. 이 과정에서 포인터를 활용하면 코드를 간결하고 효율적으로 작성할 수 있습니다. 포인터 기반 탐색은 널 문자('\0')로 끝나는 C 스타일 문자열에서 동작합니다.

문자열이 포인터 str이 가리키고 있다면, 시작 시점에 *str은 첫 번째 문자를 나타냅니다. str을 1씩 증가시킬 때마다 *str은 다음 문자를 차례대로 가리키게 됩니다. 현재 가리키는 문자가 소문자 [a, e, i, o, u] 또는 대문자 [A, E, I, O, U] 중 하나라면 모음으로 판단하여 카운트를 증가시키면 됩니다.

알고리즘

countVowels(str)

시작
    count := 0
    str의 각 문자 ch에 대해 반복
        만약 ch가 [a, e, i, o, u] 또는 [A, E, I, O, U]에 속하면
            count := count + 1
        조건문 종료
    반복 종료
    count 반환
종료

C++ 예제 코드

#include<iostream>
using namespace std;

int countVowels(const char *myStr){
    int count = 0;
    while((*myStr) != '\0'){   // 널 문자를 만날 때까지 반복
        if(*myStr == 'a' || *myStr == 'e' || *myStr == 'i' || *myStr == 'o' || *myStr == 'u' ||
           *myStr == 'A' || *myStr == 'E' || *myStr == 'I' || *myStr == 'O' || *myStr == 'U') {
            count++;   // 모음이면 카운트 증가
        }
        myStr++;   // 포인터를 다음 문자로 이동
    }
    return count;
}

int main() {
    string myStr;
    cout << "Enter String: ";
    cin >> myStr;
    cout << "Number of Vowels: " << countVowels(myStr.c_str());
}

실행 결과

Enter String: EDucation
Number of Vowels: 5

코드 설명

  • const char *myStr: C 스타일 문자열을 가리키는 포인터입니다. const를 붙이면 함수 내부에서 원본 문자열이 실수로 수정되는 것을 방지할 수 있습니다.
  • *myStr != '\0': C 스타일 문자열은 항상 널 문자('\0')로 끝나므로, 이를 반복문의 종료 조건으로 사용합니다.
  • myStr++: 포인터를 한 칸 앞으로 이동시켜 다음 문자를 가리키게 하며, 이를 통해 문자열 전체를 순회합니다.
  • myStr.c_str(): C++의 std::string 객체를 C 스타일 문자열(const char*)로 변환하여 함수에 전달하는 역할을 합니다.

위 예제에서 입력된 "EDucation"에는 대소문자를 모두 포함하여 총 5개의 모음(E, u, a, i, o)이 존재하므로 결과값이 5로 출력됩니다. 참고로 main 함수는 표준 C++에서 반환형을 명시하는 int main() 형태로 작성하는 것이 좋습니다.