আমাদের একটি রেঞ্জ দেওয়া আছে শুরু এবং শেষ মানসহ, এবং আমাদের কাজ হল দেওয়া রেঞ্জে থাকা হেক্সাডেসিমেল সংখ্যা বা অক্ষরগুলির সংখ্যা গণনা করা।
হেক্সাডেসিমেল অক্ষর কী?
কম্পিউটার শব্দে, হেক্সাডেসিমেল সংখ্যাগুলো হল বেস ১৬ والے সংখ্যা যার অর্থ বাইনারি ডিজিট ১৬-বিটে রিপ্রেজেন্ট করা যায়। এতে ০-১৫ পর্যন্ত পূর্ণসংখ্যা থাকে। যেখানে ১০ কে A, ১১ কে B, ১২ কে C, ১৩ কে D, ১৪ কে E এবং ১৫ কে F হিসেবে রিপ্রেজেন্ট করা হয়।
নিচের প্রোগ্রামে আমাদের কাজ হল রেঞ্জে হেক্সাডেসিমেল অক্ষর আছে কিনা তা খুঁজে বের করা।
উদাহরণ
ইনপুট − start = 10, End = 13 আউটপুট − 4
ব্যাখ্যা − 10 এবং 13-এর মধ্যে ৪টি হেক্সাডেসিমেল সংখ্যা রয়েছে: 10 (A), 11 (B), 12 (C), 13 (D)।
ইনপুট − start = 15, End = 16 আউটপুট − 1
ব্যাখ্যা − কেবল একটি হেক্সাডেসিমেল অক্ষর রয়েছে: 15 (F) এবং 16 হল 10।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- রেঞ্জ ইনপুট নিন
startএবংendভেরিয়েবলে countভেরিয়েবল ঘোষণা করুন এবং 0 দিয়ে আরম্ভ করুনi = startথেকেi <= endপর্যন্ত লুপ শুরু করুন- লুপের ভিতরে চেক করুন
i >= 10 && i <= 15হলেcount1 বৃদ্ধি করুন - অন্যথায়, চেক করুন
i > 15 - তবে,
tempভেরিয়েবলেi-র মান সেট করুন এবংk != 0পর্যন্ত ট্রাভার্স করুন - চেক করুন
k % 16 >= 10 count1 বৃদ্ধি করুন- এবং
temp = temp / 16সেট করুন countমান ফেরত দিন- ফলাফল প্রিন্ট করুন
উদাহরণ কোড
#include <iostream>
using namespace std;
// হেক্সাডেসিমেল অক্ষরের মোট সংখ্যা গণনা
int counthexa(int start, int end) {
int result = 0;
for (int i = start; i <= end; i++) {
// 10 থেকে 15 পর্যন্ত সব হেক্সাডেসিমেল অক্ষর
if (i >= 10 && i <= 15) {
result++;
}
// যদি i > 15 হয় তবে 16 দিয়ে মডكرر করে
// সংখ্যা > 0 হওয়া পর্যন্ত
// যদি number % 16 >= 10 হয় তবে গণনা বৃদ্ধি
else if (i > 15) {
int k = i;
while (k != 0) {
if (k % 16 >= 10) {
result++;
}
k = k / 16;
}
}
}
return result;
}
// Main ফাংশন
int main() {
int start = 10, end = 60;
cout << "count is: " << counthexa(start, end);
return 0;
}
আউটপুট
যদি আমরা উপরের কোডটি রান করি তবে নিচের আউটপুট পাব −
count is: 21