একটি সংখ্যা স্ট্রিং আকারে এবং একটি বেস দেওয়া থাকে; টাস্ক হলো চেক করা যে দেওয়া সংখ্যাটি সেই দেয়া বেসের অন্তর্গত কিনা।
আমাদের সংখ্যা এবং বেস চেক করতে হবে নম্বর সিস্টেম অনুযায়ী যেখানে বেস থাকে ২ বাইনারি নম্বরের জন্য, ৮ অক্ট্যাল নম্বরের জন্য, ১০ ডেসিমাল নম্বরের জন্য এবং ১৬ হেক্সাডেসিমাল নম্বরের জন্য। এই অনুযায়ী আমাদের বের করতে হবে দেওয়া স্ট্রিংয়ের সংখ্যাটি নির্দিষ্ট বেসের অন্তর্গত কিনা, যদি অন্তর্গত থাকে তবে আউটপুট স্ক্রিনে "Yes" প্রিন্ট করবো; অন্যথায় "No" প্রিন্ট করবো।
যেমন আমরা জানি, নম্বর/এক্সপ্রেশন "1A6" বেস ১৬-এর এবং "1010" বেস ২-এর, কিন্তু এটা শুধু দৃষ্টি ব্যবহার করে জাজ করা যায়। এখন আমাদের একটি প্রোগ্রাম দিয়ে সমস্যা সমাধান করতে হবে।
উদাহরণ
ইনপুট: str = "1010", base =2 আউটপুট: yes ইনপুট: str = "1AA4", base = 16 আউটপুট: yes ইনপুট: str = "1610", base = 2 আউটপুট: No
দেওয়া সমস্যা সমাধানের জন্য আমরা যে পদ্ধতি ব্যবহার করব −
- চেক করুন বেস ২ থেকে ১৬-এর মধ্যে আছে কিনা।
- তারপর স্ট্রিং-এর প্রতিটি ডিজিট ঐ নির্দিষ্ট বেসের অন্তর্গত আছে কিনা চেক করুন।
- যদি অন্তর্গত থাকে তবে true রিটার্ন করুন, অন্যথায় false।
অ্যালগরিদম
Start
ধাপ ১ → function bool isInGivenBase(char str[], int base) এ
If base > 16 then,
Return false
Else If base <= 10 then,
লুপ: i = 0; i < strlen(str); i++
If !(str[i] >= '0' and str[i] < ('0' + base)) then,
Return false
Else
লুপ: i = 0; i < strlen(str); i++
If NOT ((str[i] >= '0' && str[i] < ('0' + base)) ||
(str[i] >= 'A' && str[i] < ('A' + base – 10) ) then,
Return false
Return true
ধাপ ২ → function int main() এ
str[] = {"AF87"} সেট
If isInGivenBase(str, 16) then,
Print "yes "
Else
Print "No "
Stop
উদাহরণ
#include <ctype.h>
#include <stdio.h>
#include <string.h>
bool isInGivenBase(char str[], int base) {
// অ্যালোড বেস ১৬ (হেক্সাডেসিমাল) পর্যন্ত
if (base > 16)
return false;
// যদি বেস ১০ বা তার নিচে হয়, তবে সব ডিজিট ০ থেকে ৯ পর্যন্ত হতে হবে।
else if (base <= 10) {
for (int i = 0; i < strlen(str); i++)
if (!(str[i] >= '0' and
str[i] < ('0' + base)))
return false;
}
// যদি বেস ১৬ বা তার নিচে হয়, তবে সব ডিজিট ০ থেকে ৯ অথবা 'A' থেকে থাকতে হবে
else {
for (int i = 0; i < strlen(str); i++)
if (! ((str[i] >= '0' &&
str[i] < ('0' + base)) ||
(str[i] >= 'A' &&
str[i] < ('A' + base - 10))
))
return false;
}
return true;
}
// Driver code
int main() {
char str[] = {"AF87"};
if (isInGivenBase(str, 16))
printf("yes\n");
else
printf("No\n");
return 0;
}
আউটপুট
yes