এখানে, আমাদের একটি 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