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

C++ প্রোগ্রাম: বাইনারি সার্চ পদ্ধতিতে দেওয়া সংখ্যার ঘটনার সংখ্যা খুঁজে বের করা


এটি একটি C++ প্রোগ্রাম যা বাইনারি সার্চ পদ্ধতি ব্যবহার করে একটি দেওয়া সংখ্যার ঘটনার সংখ্যা খুঁজে বের করে।

অ্যালগরিদম

শুরু
  ফাংশন Insert() ট্রিতে নোড ইন্সার্ট করার জন্য:
    আর্গুমেন্ট:
      root, d.
    ফাংশনের বডি:
      আর্গুমেন্ট লিস্ট থেকে ডেটা ব্যবহার করে নোড তৈরি করুন।
      যদি ট্রি সম্পূর্ণ খালি থাকে, তবে নতুন নোডকে রুট হিসেবে ইন্সার্ট করুন।
      যদি d == tmp->data, তবে সেই নির্দিষ্ট নোডের কাউন্ট বাড়ান।
      যদি d < tmp->data, তবে tmp পয়েন্টারকে বাম চাইল্ডে সরান।
      যদি d > tmp->data, তবে tmp পয়েন্টারকে ডান চাইল্ডে সরান।
শেষ
শুরু
  ফাংশন SearchNode() ট্রিতে আইটেম সার্চ করার জন্য:
    আর্গুমেন্ট:
      root, d.
    ফাংশনের বডি:
      ফর লুপ চালান যতক্ষণ না temp NULL পয়েন্টার নির্দেশ করে অথবা ডেটা আইটেম পাওয়া যায়।
        যদি d < tmp->data, tmp পয়েন্টারকে বাম চাইল্ডে সরান।
        যদি d > tmp->data, tmp পয়েন্টারকে ডান চাইল্ডে সরান।
        যদি d == tmp->data, আইটেম পাওয়া গেলে এবং এর কাউন্ট প্রিন্ট করুন এবং main-এ ফিরে যান।
      অন্যথায়
        ডেটা পাওয়া যায়নি প্রিন্ট করুন।
শেষ

উদাহরণ

#include <iostream>
using namespace std;

struct nod { // নোড ডিক্লেয়ারেশন
    int data;
    int cnt;
    nod* l;
    nod* r;
};

nod* CreateNod(int d) { // নতুন নোড তৈরি
    nod* newnod = new nod;
    newnod->data = d;
    newnod->cnt = 1;
    newnod->l = NULL;
    newnod->r = NULL;
    return newnod;
}

nod* Insert(nod* root, int d) { // ইন্সারশন করা
    nod* tmp = CreateNod(d);
    nod* t = new nod;
    t = root;
    if (root == NULL)
        root = tmp;
    else {
        while (t != NULL) {
            if (t->data == d) {
                t->cnt++;
                break;
            } else if (t->data < d) {
                if (t->r == NULL) {
                    t->r = tmp;
                    break;
                }
                t = t->r;
            } else if (t->data > d) {
                if (t->l == NULL) {
                    t->l = tmp;
                    break;
                }
                t = t->l;
            }
        }
    }
    return root;
}

void SearchNode(nod* root, int d) { // সার্চ করা
    nod* tmp = new nod;
    tmp = root;
    while (tmp != NULL) {
        if (tmp->data == d) {
            cout << "\nData item " << d << " is present " << tmp->cnt << " number of times.";
            return;
        } else if (tmp->data > d)
            tmp = tmp->l;
        else
            tmp = tmp->r;
    }
    cout << "\n Data not found";
    return;
}

int main() {
    char c;
    int n, i, a[20] = {8,1,3,6,4,7,10,14,13,7,6,1,26,4,26,20,21,12,10,1}; // অ্যারে এলিমেন্ট নিন
    nod* root = new nod;
    root = NULL;
    for (i = 0; i < 20; i++)
        root = Insert(root, a[i]);
    up:
    cout << "\nEnter the Element to be searched: ";
    cin >> n;
    SearchNode(root, n);
    cout << "\n\nWant to search more...enter choice(y/n)?";
    cin >> c;
    if (c == 'Y' || c == 'y')
        goto up;
    return 0;
}

আউটপুট

Enter the Element to be searched: 7 Data item 7 is present 2 number of times. Want to search more...enter choice(y/n)?y Enter the Element to be searched: 6 Data item 6 is present 2 number of times. Want to search more...enter choice(y/n)?y Enter the Element to be searched: 4 Data item 4 is present 2 number of times. Want to search more...enter choice(y/n)?y Enter the Element to be searched: 15 Data not found Want to search more...enter choice(y/n)?n

  1. C++ ব্যবহার করে পেন্টাগোনাল পিরামিডাল সংখ্যা নির্ণয় করুন

  2. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  3. C++-এ ট্রেন স্টপেজ স্টেশন সংখ্যা বের করুন

  4. C++-এ দিয়ে गये পয়েন্ট থেকে সম্ভাব্য কোয়াড্রিল্যাটারেল সংখ্যা বের করুন