কম্পিউটার টিউটোরিয়াল

C প্রোগ্রাম: একটি সংখ্যা নির্দিষ্ট বেসের অন্তর্গত কিনা তা চেক করা

একটি সংখ্যা স্ট্রিং আকারে এবং একটি বেস দেওয়া থাকে; টাস্ক হলো চেক করা যে দেওয়া সংখ্যাটি সেই দেয়া বেসের অন্তর্গত কিনা।

আমাদের সংখ্যা এবং বেস চেক করতে হবে নম্বর সিস্টেম অনুযায়ী যেখানে বেস থাকে ২ বাইনারি নম্বরের জন্য, ৮ অক্ট্যাল নম্বরের জন্য, ১০ ডেসিমাল নম্বরের জন্য এবং ১৬ হেক্সাডেসিমাল নম্বরের জন্য। এই অনুযায়ী আমাদের বের করতে হবে দেওয়া স্ট্রিংয়ের সংখ্যাটি নির্দিষ্ট বেসের অন্তর্গত কিনা, যদি অন্তর্গত থাকে তবে আউটপুট স্ক্রিনে "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

  1. পাইথন প্রোগ্রাম: সংখ্যা n আশ্চর্য (weird) কিনা যাচাই করা

  2. পাইথনে দেয়া সংখ্যা নার্সিসিস্টিক নম্বর কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে আযল নম্বর (Ugly Number) যাচাই করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম: কোনো সংখ্যা প্রাইম কিনা তা যাচাই করা