কম্পিউটার টিউটোরিয়াল

C++-এ স্ট্রিং-এ ASCII মান যোগফল k-র চেয়ে ছোট ও বড় শব্দ গণনা


আমাদের একটি স্ট্রিং str (বাক্য) এবং একটি সংখ্যা k দেওয়া আছে। লক্ষ্য হলো str-এ কতগুলো শব্দের ASCII মান যোগফল k-র চেয়ে ছোট এবং কতগুলো বড় সেটা বের করা।

ASCII − প্রতিটি ক্যারেক্টরের জন্য অনন্য কোড হিসেবে割り当て করা সংখ্যা।

উদাহরণ দিয়ে বুঝি

ইনপুট − str= "This is ASCII", k=300

আউটপুট − ASCII যোগফল k-র চেয়ে ছোট শব্দ: ১, বড় শব্দ: ২

ব্যাখ্যা − শব্দ "is" এর ASCII যোগফল ৩০০-র চেয়ে ছোট, বাকি দুটি বড়।

ইনপুট − str= "set set set", k=300

আউটপুট − ASCII যোগফল k-র চেয়ে ছোট শব্দ: ০, বড় শব্দ: ৩

ব্যাখ্যা − সব শব্দ একই এবং ASCII যোগফল ৩০০-র চেয়ে বড়।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

for লুপ দিয়ে স্ট্রিং ট্রাভার্স করব। স্পেস পাওয়ার পর প্রতিটি শব্দের ক্যারেক্টরের ASCII যোগফল temp-এ কাউন্ট করব। শব্দ শেষে temp < k চেক করব। ছোট হলে কাউন্ট বাড়াব।

  • স্ট্রিং str এবং ইন্টিজার k নিন।
  • words_less_greater(string str, int k, int length) ফাংশন স্ট্রিং নিয়ে ASCII যোগফল k-র চেয়ে ছোট ও বড় শব্দ কাউন্ট করে।
  • temp=0 (প্রতি শব্দের ASCII যোগফল), count=0 (ছোট শব্দ কাউন্ট), total=0 (মোট শব্দ)।
  • i=0 থেকে length পর্যন্ত লুপে:
    • যদি str[i]==' ' (স্পেস), শব্দ শেষ: temp < k হলে count++ এবং total++। temp=0 রিসেট।
    • অন্যথায় temp += str[i] (ASCII যোগফল বাড়ান)।
  • লুপ শেষে শেষ শব্দের জন্য একবার চেক করুন।
  • total++ এবং temp < k হলে count++।
  • ফলাফল প্রিন্ট করুন: ছোট শব্দ = count, বড় শব্দ = total - count।

উদাহরণ

#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
  1. ফিবোনাচ্চি সংখ্যা যেন করা নোডের ওজন এবং X-এর যোগফল C++-এ

  2. C++-এ [l, r] রেঞ্জের বাইরে ASCII মানবाले অক্ষর গণনা ও প্রিন্ট

  3. C++-এ [l, r] রেঞ্জের ভিতরে ASCII মানবाले অক্ষর গণনা ও প্রিন্ট

  4. C++-এ সাইজ K সাব-অ্যারে যার গড় থ্রেশহোল্ড বা তার বেশি