একটি স্ট্রিং এবং একটি বেস হিসাবে একটি সংখ্যা দেওয়া; কাজ হল প্রদত্ত সংখ্যাটি সেই প্রদত্ত বেসের কিনা তা পরীক্ষা করা।
যে সংখ্যা পদ্ধতিতে একটি বাইনারি সংখ্যার জন্য 2, একটি অক্টাল সংখ্যার জন্য 8, দশমিক সংখ্যার জন্য 10 এবং একটি হেক্সাডেসিমেল সংখ্যার জন্য 16 এর মতো বেস রয়েছে সেই সংখ্যা পদ্ধতি অনুসারে আমাদের সংখ্যা এবং ভিত্তিটি পরীক্ষা করতে হবে। এই অনুসারে আমাদের খুঁজে বের করতে হবে যে একটি স্ট্রিং এর প্রদত্ত সংখ্যাটি একটি নির্দিষ্ট বেসের অন্তর্গত কিনা, যদি এটি একটি নির্দিষ্ট বেসের অন্তর্গত হয় তবে আমাদের আউটপুট স্ক্রিনে "হ্যাঁ" প্রিন্ট করতে হবে; অন্যথায় একটি আউটপুট স্ক্রিনে "না"৷
৷যেমন আমরা জানি যে, সংখ্যা/অভিব্যক্তি "1A6" বেস 16 এর এবং "1010" বেস 2 এর, তবে এটি কেবল দৃশ্যমান বিশ্লেষণের মাধ্যমে বিচার করা যেতে পারে এখন আমাদের সমস্যা সমাধানের একটি উপায় খুঁজে বের করতে হবে প্রোগ্রাম।
উদাহরণ
Input: str = “1010”, base =2 Output: yes Input: str = “1AA4”, base = 16 Output: yes Input: str = “1610”, base = 2 Output: No
প্রদত্ত সমস্যা সমাধানের জন্য আমরা যে পদ্ধতি ব্যবহার করব −
- বেসটি 2 থেকে 16 এর মধ্যে আছে কিনা তা পরীক্ষা করুন।
- তারপর একটি স্ট্রিগের প্রতিটি সংখ্যা নির্দিষ্ট বেসের অন্তর্গত কিনা তা পরীক্ষা করবে।
- যদি এটি হয় তবে সত্য ফেরত দিন, অন্যথায় মিথ্যা।
অ্যালগরিদম
Start
Step 1 -> In function bool isInGivenBase(char str[], int base)
If base > 16 then,
Return false
Else If base <= 10 then,
Loop For i = 0 and i < strlen(str) and i++
If !(str[i] >= '0' and str[i] < ('0' + base)) then,
Return false
Else
Loop For i = 0 and i < strlen(str) and i++
If NOT ((str[i] >= '0' && str[i] < ('0' + base)) ||
(str[i] >= 'A' && str[i] < ('A' + base – 10) ) then,
Return false
Return true
Step 2 -> In function int main()
Set 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) {
// Allowed bases are till 16 (Hexadecimal)
if (base > 16)
return false;
// If base is below or equal to 10, then all
// digits should be from 0 to 9.
else if (base <= 10) {
for (int i = 0; i < strlen(str); i++)
if (!(str[i] >= '0' and
str[i] < ('0' + base)))
return false;
}
// If base is below or equal to 16, then all
// digits should be from 0 to 9 or from '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