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

C++에서 k보다 작거나 큰 ASCII 값의 합을 갖는 단어의 수를 계산합니다.

<시간/>

문장과 숫자 k가 포함된 문자열 str이 제공됩니다. 목표는 k보다 작은 ascii 값을 갖는 in str과 k보다 큰 ascii 값을 가진 단어의 수를 찾는 것입니다.

ASCII − 언어의 각 문자에 할당된 고유 코드입니다.

예를 들어 이해합시다.

입력 - str="이것은 ASCII입니다". k=300

출력 − ASCII 값의 합이 k보다 작은 단어의 개수는 − 1

k보다 큰 ASCII 값의 합을 갖는 단어 수는 - 2

설명 - "is"라는 단어에는 300개 미만의 ASCII가 있고 다른 두 개는 더 있습니다.

입력 - str="세트 세트 세트". k=300

출력 − ASCII 값의 합이 k보다 작은 단어의 개수는 − 0

k보다 큰 ASCII 값의 합을 갖는 단어의 개수는 - 3입니다.

설명 − 모든 단어가 동일하며 ASCII가 300개 이상입니다.

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

for 루프를 사용하여 문자열 str을 탐색합니다. 공백 뒤의 각 단어에 대해 총계에 str[i]를 추가하기 시작합니다. 이것이>k인 경우. 증분 카운트.

  • 문자열을 str로, 정수를 k로 취합니다.

  • 함수 words_less_greater(string str, int k, int length)는 문자열을 가져와서 k보다 크고 작은 ascii가 있는 단어 수를 반환합니다.

  • str의 각 단어의 ascii에 대해 temp를 0으로 취하십시오.

  • ASCII가 k보다 작은 단어 수는 0으로 간주합니다.

  • k의 총 단어는 총계를 0으로 합니다.

  • for 루프를 사용하여 str을 탐색합니다.

  • 공백 뒤의 각 단어에 대해 str[i]==' '. temp에 str[i] 문자를 추가합니다. 단어가 끝나면 temp

  • 증가하지 않는 경우 합계만 증가합니다.

  • 마지막에 카운트는 k보다 작은 ASCII를 갖는 단어의 수를 가집니다. total - count는 k보다 큰 ascii가 있는 단어입니다.

  • 결과를 인쇄합니다.

예시

#include <bits/stdc++.h>
using namespace std;
void words_less_greater(string str, int k, int length){
   int temp = 0;
   int total = 0;
   int count = 0;
   for (int i = 0; i < length; ++i){
      if (str[i] == ' '){
         if (temp < k){
            count++;
         }
         temp = 0;
         total++;
      }
      else{
         temp += str[i];
      }
   }
   total++;
   if (temp < k){
      count++;
   }
   cout<<"Count of number of words having sum of ASCII values less than k are: "<< count;
   cout<<"\nCount of number of words having sum of ASCII values greater than k are: "<< total -
   count;
}
int main(){
   string str = "tutorials point";
   int k = 900;
   int length = str.length();
   words_less_greater(str, k, length);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of number of words having sum of ASCII values less than k are: 1
Count of number of words having sum of ASCII values greater than k are: 1