计算C ++中ASCII值之和小于和大于k的单词数

我们给了一个带句子和数字k的字符串str。目的是找到ascii值小于k且ascii值大于k的in str的计数。

ASCII-唯一代码,是一种语言中分配给每个字符的数字。

让我们通过示例来理解。

输入-str =“这是ASCII”。k = 300

输出-ASCII值之和小于k的单词数为-1

ASCII值之和大于k的单词数计数为− 2

说明-“ is”一词的ascii少于300,另外两个少。

输入-str =“ set set set”。k = 300

输出-ASCII值之和小于k的单词数为-0

ASCII值之和大于k的单词数的计数是-3

解释-所有单词都相同,且ASCII大于300。

以下程序中使用的方法如下

我们将使用for循环遍历字符串str。对于空格之后的每个单词,开始将str [i]添加到总数中。如果> k。增量计数。

  • 以string为str和integer为k。

  • 函数words_less_greater(string str,int k,int length)获取字符串并返回ascii小于或大于k的单词数。

  • str中每个单词的ascii取temp为0。

  • 对于ASCII小于k的单词计数,将count设为0。

  • 对于k中的总单词,将total作为0。

  • 使用for循环遍历str。

  • 对于每个空格后的单词str [i] ==''。将其字符str [i]添加到temp。单词结束后,检查temp <k。如果是,则增加计数和总计。

  • 如果不是,则仅增加总计。

  • 最后,计数具有ASCII小于k的单词数。总计-计数将是ascii大于k的单词。

  • 打印结果。

示例

#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 = "nhooo.com";
   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