मान लीजिए कि सुपरमार्केट में कोई बिक्री है, तो प्रत्येक ग्राहक को छूट मिलेगी। विचार करें कि सुपरमार्केट में कुछ उत्पाद हैं जहां i-वें उत्पाद की आईडी उत्पाद है[i] और इस उत्पाद की प्रति यूनिट कीमत मूल्य है[i]। यहां सिस्टम ग्राहकों की संख्या की गणना करेगा और जब n-th ग्राहक आएगा तो उसे बिल पर छूट मिलेगी। फिर सिस्टम फिर से ग्राहकों की गिनती शुरू कर देगा। ग्राहक प्रत्येक उत्पाद की एक निश्चित मात्रा का आदेश देता है जहां उत्पाद [i] ग्राहक द्वारा ऑर्डर किए गए i-वें उत्पाद की आईडी है और राशि [i] उस उत्पाद के लिए ग्राहक द्वारा ऑर्डर की गई इकाइयों की संख्या है। इसलिए हमें इस प्रणाली को लागू करना होगा। कैशियर वर्ग के पास ये तरीके होंगे
-
कैशियर (int n, int छूट, int [] उत्पाद, int [] मूल्य) इस कंस्ट्रक्टर का उपयोग ऑब्जेक्ट को n, छूट, उत्पादों और उनकी कीमतों के साथ आरंभ करने के लिए किया जाता है।
-
डबल गेटबिल (इंट [] उत्पाद, इंट [] राशि) यह बिल का मूल्य वापस कर देगा और यदि आवश्यक हो तो छूट लागू करेगा। वास्तविक मान के 10^-5 के भीतर उत्तर सही के रूप में स्वीकार किए जाएंगे।
उदाहरण . के लिए , कैशियर (3, 50, [1,2,3,4,5,6,7], [100,200,300,400,300,200,100]) का उपयोग करके कैशियर को इनिशियलाइज़ करें, अब getBill विधियों को कॉल करें -
getBill([1,2],[1,2]), getBill([3,7],[10,10]), getBill([1,2,3,4,5,6,7],[1,1,1,1,1,1,1]), getBill([4],[10]), getBill([7,3],[10,10]), getBill([7,5,3,1,6,4,2],[10,10,10,9,9,9,7]), getBill([2,3,5],[5,3,2]), then the outputs will be [500.0, 4000.0, 800.0, 4000.0, 4000.0, 7350.0, 2500.0]होंगे।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
ऑर्डर नामक मानचित्र को परिभाषित करें
-
कैशियर निम्नानुसार काम करेगा -
-
वर्तमान:=0
-
मेरे लिए 0 से लेकर कीमतों की श्रेणी के आकार तक
-
आदेश [उत्पादन [i]]:=कीमतें [i]
-
-
दी गई छूट दर के अनुसार छूट सेट करें
-
गेटबिल विधि इस प्रकार काम करेगी -
-
1 से कर्व बढ़ाएँ, ध्वज सेट करें:=सत्य, यदि curr =n, अन्यथा असत्य
-
अगर curr =n, तो curr सेट करें:=0
-
रिट:=0
-
मैं के लिए 0 से उत्पाद सरणी के आकार में - 1
-
एक्स:=समर्थक [i]
-
लागत:=आदेश [x]
-
y:=राशि [i]
-
लागत से रिट बढ़ाएँ * y
-
-
अगर फ्लैग सेट है, तो रिट :=रिट - (रिट * डिस्काउंट) / 100
-
वापसी रिट
उदाहरण (C++)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Cashier { public: int curr; map <double, double> order; int n; int discount; Cashier(int n, int discount, vector<int>& pro, vector<int>& p) { curr = 0; for(int i = 0; i < p.size(); i++){ order[pro[i]] = p[i]; } this->n = n; this->discount = discount; } double getBill(vector<int> pro, vector<int> am) { curr++; bool flag = curr == n; if(curr == n){ curr = 0; } double ret = 0; for(int i = 0; i < pro.size(); i++){ double x = pro[i]; double cost = order[x]; double y = am[i]; ret += (cost * y); } if(flag) ret = ret - (ret * discount) / 100; return ret; } }; main(){ vector<int> v1 = {1,2,3,4,5,6,7}, v2 = {100,200,300,400,300,200,100}; Cashier ob(3, 50, v1, v2); v1 = {1,2}, v2 = {1,2}; cout << (ob.getBill(v1, v2)) << endl; v1 = {3,7}, v2 = {10,10}; cout << (ob.getBill(v1, v2)) << endl; v1 = {1,2,3,4,5,6,7}, v2 = {1,1,1,1,1,1,1}; cout << (ob.getBill(v1, v2)) << endl; v1 = {4}, v2 = {10}; cout << (ob.getBill(v1, v2)) << endl; v1 = {7,3}, v2 = {10,10}; cout << (ob.getBill(v1, v2)) << endl; v1 = {7,5,3,1,6,4,2}, v2 = {10,10,10,9,9,9,7}; cout << (ob.getBill(v1, v2)) << endl; v1 = {2,3,5}, v2 = {5,2,3}; cout << (ob.getBill(v1, v2)) << endl; }
इनपुट
See the main function
आउटपुट
500 4000 800 4000 4000 7350 2500