আমাদের একটি স্ট্রিং str দেওয়া আছে। কাজ হল স্ট্রিং-এ কনসোন্যান্ট (ব্যঞ্জনবর্ণ) - অর্থাৎ স্বরবর্ণ (a, e, i, o, u) ছাড়া অন্যান্য অক্ষর - তাদের সংখ্যা ইটেরেটিভ এবং রিকারসিভ পদ্ধতিতে গণনা করা।
রিকারশন (Recursion) হল একটি ফাংশন নিজেই নিজেকে কল করে বারবার এক্সিকিউট করা। ইটেরেশন (Iteration) হল লুপ ব্যবহার করে একই কাজ বারবার করা।
উদাহরণ:
ইনপুট: "tutorials point" → আউটপুট: count is 8 (t, t, r, l, s, p, n, t)
ইনপুট: "a e io u" → আউটপুট: count is 0
ইটেরেটিভ পদ্ধতি
স্ট্রিং-এর প্রতিটি ক্যারেক্টার চেক করুন। যদি কনসোন্যান্ট হয় (বড় হাতের অক্ষরে রূপান্তর করে A, E, I, O, U না হয় এবং A-Z এর মধ্যে থাকে) তবে কাউন্ট বাড়ান।
প্রোগ্রাম (ইটেরেটিভ)
#include <iostream>
using namespace std;
// কনসোন্যান্ট চেক
bool consonant(char ch) {
ch = toupper(ch);
return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
int countconsonants(string s) {
int result = 0;
for (int i = 0; i < s.length(); i++) {
if (consonant(s[i])) ++result;
}
return result;
}
int main() {
string s = "wx abc def";
cout << "count is: " << countconsonants(s);
return 0;
}
আউটপুট
count is: 6
রিকারসিভ পদ্ধতি
বেস কেস: স্ট্রিং দৈর্ঘ্য ১ হলে সেটি কনসোন্যান্ট কিনা চেক করুন। রিকারসিভ স্টেপ: countconsonants(str, n-1) + consonant(str[n-1])।
প্রোগ্রাম (রিকারসিভ)
#include <iostream>
using namespace std;
bool consonant(char ch) {
ch = toupper(ch);
return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
int consonantcount(string str, int n) {
if (n == 1) return consonant(str[0]);
return consonantcount(str, n - 1) + consonant(str[n - 1]);
}
int main() {
string str = "wx abc def";
cout << "count is: " << consonantcount(str, str.length());
return 0;
}
আউটপুট
count is: 6