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

C++-এ কেস ইগনোর করে strcmp লিখা

এখানে, আমাদের একটি strcmp (স্ট্রিং কম্পেয়ার) ফাংশন তৈরি করতে হবে যা দুটি স্ট্রিং কম্পেয়ার করবে কিন্তু স্ট্রিং-এ ক্যারেক্টারদের কেস ইগনোর করবে। ফাংশনটি -1 রিটার্ন করবে যদি string1 < string2, 0 যদি string1 = string2, 1 যদি string1 > string2।

একটি উদাহরণ দিয়ে সমস্যাটি বুঝতে পারি,

ইনপুট

string1 = "Hello", string2 = "hello"

আউটপুট

0

আমাদের নিজের strcmp ফাংশন তৈরি করতে যা কেস ইগনোর করে স্ট্রিং কম্পেয়ার করবে। আমরা দুটি স্ট্রিং-এ সব ক্যারেক্টার থ্রু ইটারেট করব, যদি i-তম ইনডেক্সের ক্যারেক্টার একই হয় অর্থাৎ string1[i] == string2[i], কন্টিনিউ। যদি string1[i] > string2[i], ১ রিটার্ন। যদি string1[i] < string2[i], -১ রিটার্ন। যদি স্ট্রিং শেষ হয় তবে ০ রিটার্ন।

এখানে, আমাদের কেস ইগনোর করতে হবে, তাই A এবং a একই বিবেচনা হবে। আমরা ক্যারেক্টারদের ASCII ভ্যালু ব্যবহার করব, তাহলে a-এর ASCII ৯৭ হবে A-এর ASCII ৬৫-এর সমান।

উদাহরণ

আমাদের সমাধানের ইমপ্লিমেন্টেশন দেখানোর প্রোগ্রাম,

#include <iostream>
using namespace std;

int strcmpFunc(string string1, string string2) {
    int i;
    for (i = 0; string1[i] && string2[i]; ++i) {
        if (string1[i] == string2[i] || (string1[i] ^ 32) == string2[i])
            continue;
        else
            break;
    }
    if (string1[i] == string2[i])
        return 0;
    if ((string1[i] | 32) < (string2[i] | 32))
        return -1;
    return 1;
}

int main() {
    cout << "Comparing string using our strcmp function:\n";
    cout << "Result: " << strcmpFunc("HELLO", "hello") << endl;
    cout << "Result: " << strcmpFunc("", "Hello") << endl;
    cout << "Result: " << strcmpFunc("Tutorials", "Pint") << endl;
    cout << "Result: " << strcmpFunc("afdadsa", "rewf") << endl;
    cout << "Result: " << strcmpFunc("tutorialspoint", "TUTORIALSpoint") << endl;
    return 0;
}

আউটপুট

Comparing string using our strcmp function:
Result: 0
Result: -1
Result: 1
Result: -1
Result: 0
  1. C++-এ নিজস্ব অ্যাসাইনমেন্ট অপারেটর (Assignment Operator) কবে লিখা উচিত

  2. C-তে কাস্টম হেডার ফাইল তৈরি করা

  3. C++-এ নিজের sizeof অপারেটর বাস্তবায়ন করা

  4. C/C++-এ strncmp() এবং strcmp()-এর পার্থক্য