Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 문자열의 자음 계산(반복 및 재귀 메서드)

<시간/>

임의의 길이의 str이 포함된 문자열이 주어지고 반복 및 재귀 방법을 사용하여 주어진 문자열의 자음 개수를 계산하는 작업이 주어집니다.

자음은 모음이 아닌 알파벳, 즉 a, i, e, o, u를 제외한 알파벳은 자음으로 간주됩니다. 따라서 아래 프로그램에서 문자열에서 이들 이외의 알파벳의 수를 찾아야 합니다.

재귀와 반복은 모두 일련의 명령을 반복적으로 실행합니다. 재귀는 함수의 문이 반복적으로 자신을 호출하는 경우입니다. 반복은 제어 조건이 거짓이 될 때까지 루프를 반복적으로 실행하는 것입니다. 재귀와 반복의 주요 차이점은 재귀는 항상 함수에 적용되는 프로세스이며 반복적으로 실행하려는 명령 집합에 반복이 적용된다는 것입니다.

Input − string str = “tutorials point”
Output − count is 8

설명 − 주어진 문자열 str에는 총 8개의 자음이 있으며 t, t, r, l, s, p, n 및 t가 있습니다.

Input − string str = “a e io u”
Output − count is 0

설명 − 주어진 문자열 str에서 사용할 수 있는 자음이 없고 대신 모음만 있으므로 count는 0입니다.

반복

아래 프로그램에서 사용한 접근 방식은 다음과 같습니다.

  • 변수에 문자열을 입력한다고 가정해 봅시다. str

  • 문자열의 문자 수에 따라 정수 값을 반환하는 length() 함수를 사용하여 주어진 문자열의 길이를 계산합니다.

  • 요소 수를 저장할 임시 변수를 가져옵니다.

  • i가 문자열 길이보다 작아질 때까지 루프를 0으로 시작

  • 루프 내에서 str[i]가 자음인지 확인한 다음 count 값을 1 증가

  • 개수 반환

  • 결과를 인쇄하십시오.

예시

// Iterative CPP program
#include <iostream>
using namespace std;
// Function to check for consonant
bool consonant(char ch){
   // To handle lower case
   ch = toupper(ch);
   return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
//function to count consonant
int countconsonants(string s){
   int result = 0;
   for (int i = 0; i < s.length(); i++){
      // To check is character is Consonant
      if (consonant(s[i])){
         ++result;
      }
   }
   return result;
}
// main function
int main(){
   string s = "wx abc def";
   cout <<"count is: "<<countconsonants(s);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다.

count is: 6

재귀

아래 프로그램에서 사용한 접근 방식은 다음과 같습니다.

  • 변수에 문자열을 입력한다고 가정해 봅시다. str

  • 문자열의 문자 수에 따라 정수 값을 반환하는 length() 함수를 사용하여 주어진 문자열의 길이를 계산합니다.

  • 요소 수를 저장할 임시 변수를 가져옵니다.

  • 문자열의 자음을 계산하기 위해 자신을 호출하는 재귀 함수를 만듭니다.

  • IF 크기가 1인지 확인한 다음 str[0]을 반환합니다.

  • 그런 다음 recursive_call_to_function을 (str, size-1)로 반환 + 문자가 문자열인지 확인 (str[size-1])

예시

// Recursive CPP program
#include <iostream>
using namespace std;
// Function to check for consonant
bool consonant(char ch){
   // To convert the lower case
   ch = toupper(ch);
   return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
// to count total number of consonants
int consonantcount(string str, int n){
   if (n == 1){
      return consonant(str[0]);
   }
   return consonantcount(str, n - 1) +
   consonant(str[n-1]);
}
int main(){
   string str = "wx abc def";
   cout <<"count is: "<<consonantcount(str, str.length());
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

count is: 6