Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में डिज़ाइन फ़ोन निर्देशिका

मान लीजिए हम एक फोन निर्देशिका डिजाइन करना चाहते हैं जो निम्नलिखित कार्यों का समर्थन करती है -

  • get - यह एक ऐसा नंबर प्रदान करेगा जो किसी को नहीं सौंपा गया है।

  • चेक - यह जांच करेगा कि कोई नंबर उपलब्ध है या नहीं।

  • रिलीज़ - यह एक नंबर को रीसायकल या रिलीज़ करेगा।

प्रारंभकर्ता का उपयोग करके, हम पहले n संख्याओं को प्रारंभ कर सकते हैं

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक सेट को परिभाषित करें

  • उपलब्ध एक कतार परिभाषित करें

  • प्रारंभकर्ता अधिकतम संख्या लेगा।

  • एन:=अधिकतम संख्या

  • इनिशियलाइज़ i :=0 के लिए, जब i

    • मुझे उपलब्ध में डालें

  • फ़ंक्शन को परिभाषित करें get()

  • यदि उपलब्ध का आकार 0 के समान है, तो -

    • वापसी -1

  • x :=उपलब्ध का पहला तत्व

  • s में x डालें

  • उपलब्ध से तत्व हटाएं

  • वापसी x

  • फ़ंक्शन चेक को परिभाषित करें (), यह संख्या लेगा,

  • यदि संख्या>=N या संख्या <0, तो -

    • झूठी वापसी

  • रिटर्न ट्रू नंबर s में नहीं है

  • फ़ंक्शन रिलीज़ को परिभाषित करें (), यह संख्या लेगा,

  • अगर चेक (संख्या), तो -

    • वापसी

  • x:=संख्या

  • s से x हटाएं

  • उपलब्ध में x डालें

उदाहरण

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class PhoneDirectory {
public:
   set<int< s;
   queue<int< available;
   int N;
   PhoneDirectory(int maxNumbers){
      N = maxNumbers;
      for (int i = 0; i < N; i++) {
         available.push(i);
      }
   }
   int get(){
      if (available.size() == 0)
         return -1;
      int x = available.front();
      s.insert(x);
      available.pop();
      return x;
   }
   bool check(int number){
      if (number >= N || number < 0)
         return false;
      return s.find(number) == s.end();
   }
   void release(int number){
      if (check(number))
         return;
      int x = number;
      s.erase(x);
      available.push(x);
   }
};
main(){
   PhoneDirectory ob(3);
   cout << (ob.get()) << endl;
   cout << (ob.get()) << endl;
   cout << (ob.check(2)) << endl;
   cout << (ob.get()) << endl;
   cout << (ob.check(2)) << endl;
   ob.release(2);
   cout << (ob.check(2)) << endl;
}

इनपुट

ob.get();
ob.get();
ob.check(2);
ob.get();
ob.check(2);
ob.release(2);
ob.check(2);

आउटपुट

0
1
1
2
0
1

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. C++ में एडम नंबर

    इस खंड में हम देखेंगे कि एक प्रोग्राम कैसे लिखा जाता है जो यह जांच सकता है कि दी गई संख्या एडम नंबर है या नहीं। कोड में गोता लगाने से पहले आइए देखें कि एडम नंबर क्या है? आदम संख्या एक संख्या है मान लीजिए n, तो यदि n का वर्ग और n के विपरीत का वर्ग एक-दूसरे के विपरीत हों, तो वह संख्या आदम संख्या होती