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

C++ . में दो जहाजों और अनंत पानी की आपूर्ति का उपयोग करके एक लीटर मापें


इस समस्या में, हमें x और y क्षमता वाले दो बर्तन और अनंत पानी की आपूर्ति दी जाती है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो एक बर्तन में ठीक 1 लीटर की गणना कर सके। इस शर्त को देखते हुए कि x और y सह-अभाज्य हैं। सह-प्राइम्स अपेक्षाकृत प्रधान, परस्पर प्रधान . के रूप में भी जाना जाता है वे संख्याएँ दो संख्याएँ हैं जिनमें 1 उनका एकमात्र उभयनिष्ठ भाजक है। तो, इसका मतलब है कि उनका gcd(सबसे बड़ा सामान्य भाजक ) 1 है।

यहाँ, मान लीजिए कि हमारे पास दो बर्तन V1 हैं जिनकी क्षमता x है और V2 क्षमता y के साथ है। इन दो बर्तनों का उपयोग करके 1 लीटर मापने के लिए हम पहले बर्तन को पानी की आपूर्ति से भरेंगे और फिर इसे दूसरे बर्तन में डालेंगे। क्या यह प्रक्रिया तब तक जारी रहती है जब तक बर्तन V1 में 1 लीटर पानी न हो जाए।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट -

V1 = 5, V2 = 8
V1 = 5 ; V2 = 0 -> pour water from V1 to V2 and refill it.
V1 = 5 ; V2 = 5 -> pour water from V1 to V2 and refill it.
V1 = 2 ; V2 = 0 -> pour water from V1 to V2. Now, V2 is filled, empty it.
V1 = 5 ; V2 = 2 -> pour water from V1 to V2 and refill it.
V1 = 5 ; V2 = 7 -> pour water from V1 to V2 and refill it.
V1 = 4 ; V2 = 0 -> pour water from V1 to V2. Now, V2 is filled, empty it.
V1 = 1 ; V2 = 0 -> pour water from V1 to V2 and refill it.
Here, V1 measures 1 litre of water.

उदाहरण

समाधान का वर्णन करने के लिए कार्यक्रम,

#include <iostream>
using namespace std;
int x, y, V1, V2 = 0;
int transferWater(int amt1, int amt2) {
   if (amt1 + amt2 < y){
      V2 += V1;
      return V1;
   }
   int transferred = y - V2;
   V2 = 0;
   return transferred;
}
void measure1Litre() {
   while(V1 != 1){
      if (V1 == 0)
         V1 = x;
      cout<<"Vessel 1: "<<V1<<" | Vessel 2: "<<V2<<endl;
      V1 = V1 - transferWater(V1, V2);
   }
   cout<<"Vessel 1: "<<V1<<" | Vessel 2: "<<V2<<endl;
}
int main() {
   x= 5, y = 8;
   measure1Litre();
   return 0;
}

आउटपुट

Vessel 1: 5 | Vessel 2: 0
Vessel 1: 5 | Vessel 2: 5
Vessel 1: 2 | Vessel 2: 0
Vessel 1: 5 | Vessel 2: 2
Vessel 1: 5 | Vessel 2: 7
Vessel 1: 4 | Vessel 2: 0
Vessel 1: 5 | Vessel 2: 4
Vessel 1: 1 | Vessel 2: 0

  1. C++ में दो समीकरणों का प्रयोग करते हुए आवर्ती और लुप्त संख्या ज्ञात कीजिए

    इस समस्या में, हमें आकार N का एक सरणी arr[] दिया जाता है। इसमें 1 से N तक के पूर्णांक मान होते हैं। और श्रेणी से एक तत्व x गायब है जबकि सरणी में एक तत्व y दोगुना होता है। हमारा काम है दो समीकरणों का उपयोग करके दोहराई जाने वाली और लुप्त संख्या का पता लगाना । समस्या को समझने के लिए एक उदाहरण लेते हैं

  1. C++ का उपयोग करके दिए गए एक छोर और मध्य के साथ एक पंक्ति के दूसरे छोर का पता लगाएं

    इस समस्या में, हमें एक प्रारंभिक बिंदु A(xA रेखा के दो बिंदुओं के निर्देशांक दिए गए हैं। , वाईए ) और मध्यबिंदु M(xM , वाईएम ) .हमारा काम है एक पंक्ति के दूसरे छोर को एक छोर और मध्य के साथ ढूंढना । समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट A = [1, 2], M = [3, 0] आउटपुट [5, -2] स्पष्टीकरण

  1. C++ में ++ ऑपरेटर का उपयोग करके दो नंबर जोड़ें।

    प्रोग्रामिंग में, ++ ऑपरेटर इंक्रीमेंट ऑपरेटर है जो ऑपरेंड के मूल्य को 1 से बढ़ाता है। हम इस ऑपरेटर का उपयोग करके संख्या a, b संख्या में 1 जोड़कर दो नंबर जोड़ सकते हैं। उदाहरण, Input: a = 31 , b = 4 Output: 35 स्पष्टीकरण − 1 से 31 को चार बार जोड़ने पर 31 +1+1+1+1 =35 तक का योग बनता है। एल्गोरिदम I