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

C++-এ বিট অপারেশন ব্যবহার করে অক্ষরের অ্যালফাবেট পজিশন বের করুন

একটি ইংরেজি অক্ষরধরন স্ট্রিং দেওয়া আছে। প্রতিটি অক্ষরের অ্যালফাবেটে পজিশন (A=1, B=2, ..., Z=26) বের করতে হবে বিট অপারেশন ব্যবহার করে। কেস-ইনসেনসিটিভ (অবস্থা কেসensitive না)।

উদাহরণ

ইনপুট: "TutorialsPoint"

আউটপুট: 20 21 20 15 18 9 1 12 19 16 15 9 14 20

বিট ট্রিক

ASCII-এ বড় হাতের (uppercase) অক্ষরগুলো: 'A'=65 (01000001) থেকে 'Z'=90 (01011010)।

ছোট হাতের (lowercase): 'a'=97 (01100001) থেকে 'z'=122 (01111010)।

দউভয়ের লাস্ট ৫ বিট (০-৩১) একই: 'A' & 31 = 1, 'a' & 31 = 1।

সুতরাং: position = char & 31 (যেহেতু 31 = 0b11111)।

C++ প্রোগ্রাম

#include <iostream>
#include <string>
using namespace std;

void findLetterPosition(string str, int n) {
    for (int i = 0; i < n; i++) {
        cout << (str[i] & 31) << " ";
    }
}

int main() {
    string str = "TutorialsPoint";
    int n = str.length();
    cout << "The letters position in string " << str << " is \n";
    findLetterPosition(str, n);
    return 0;
}

আউটপুট

The letters position in string TutorialsPoint is
20 21 20 15 18 9 1 12 19 16 15 9 14 20

ব্যাখ্যা

  • 31 = 0b11111 (৫ বিট মাস্ক)।
  • char & 31 নিচের ৫ বিট বাদে সব বিৎ ০ করে দেয়।
  • ASCII-এ A-Z এবং a-z-এর নিচের ৫ বিটই ১-২৬ কোড করে।
  • নন-অ্যালফাবেটিক ক্যারেক্টারের জন্য এটি বोगাস মান দেবে (যেমন স্পেস=০, ডিজিট=ডিজিট ভ্যালু)।

সীমাবদ্ধতা

  • শুধু ইংরেজি অ্যালফাবেট (A-Z, a-z) এর জন্য সঠিক।
  • ইনপুট ভ্যালিডেশন যোগ করুন যদি অন্য ক্যারেক্টার থাকতে পারে।

বিকল্প পদ্ধতি (নন-বিট)

// Uppercase:
pos = ch - 'A' + 1;
// Lowercase:
pos = ch - 'a' + 1;
// Generic:
pos = tolower(ch) - 'a' + 1;
  1. C++ ব্যবহার করে ০-এর মধ্যে ১-এর প্যাটার্ন (বক্স প্যাটার্ন) প্রিন্ট করুন

  2. C++ দিয়ে অন্য একটি স্ট্রিংএ এক স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  3. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  4. C++ ব্যবহার করে ব্র্যাকেট স্ট্রিংয়ে সমান পয়েন্ট বের করা