मैं प्रोग्रामिंग और सी ++ के लिए शुरुआत कर रहा हूँ। मैं हाल ही में बुनियादी अंकगणितीय ऑपरेटरों के बारे में सीख रहा हूं और अभी अध्याय के अंत में आया हूं, जहां यह एक परियोजना अभ्यास था।

कसरत:

  • आप एक बस सेवा के लिए एक कार्यक्रम बना रहे हैं। एक बस एक बार में 50 यात्रियों को ले जा सकती है। इनपुट के रूप में बस स्टेशन में प्रतीक्षा कर रहे यात्रियों की संख्या को देखते हुए, आपको गणना और आउटपुट करने की आवश्यकता है कि अंतिम बस में कितनी खाली सीटें होंगी।

मैंने इस अभ्यास को लगभग 2.5 घंटे तक हल करने की कोशिश की, कुछ ब्रेक के साथ, लेकिन मैं इसे काम नहीं कर सका। मैंने तब कुछ समाधानों को देखने का फैसला किया था जिनके साथ अन्य आए थे और सबसे अच्छा समाधान था:

int total;
cin >> total;

cout << 50 - input % 50;

return 0;

मुझे नहीं पता कि मैं प्रोग्रामिंग के लिए बेवकूफ हूं, लेकिन मैं इस समाधान को नहीं समझ सकता। मैंने समाधान के बारे में कुछ टिप्पणियां पढ़ीं जहां "लेखक" ने यह समझाने की कोशिश की कि यह समाधान सबसे अच्छा क्यों था लेकिन मुझे अभी भी यह नहीं मिला।

जब मैं समाधान को देखता हूं, तो आप पहले इनपुट के अंदर संग्रहीत मान को 50 से विभाजित करते हैं, और फिर शेष प्राप्त करते हैं - फिर उसे 50 से घटाएं। मुझे लगता है कि यह काम करता है यदि इनपुट के अंदर का मान 100 से ऊपर है? लेकिन क्या होगा अगर मूल्य 60 जैसा था? आपको शेष ६०/५० कैसे प्राप्त करना चाहिए?

एक बार फिर, मैं इसके लिए नया हूं और जाहिर तौर पर कुछ ऐसा है जो मुझे याद आ रहा है, लेकिन मुझे नहीं पता कि क्या। मदद की अत्यधिक सराहना की जाती है।

c++
1
MIKKAILH 5 सितंबर 2021, 11:46

3 जवाब

सबसे बढ़िया उत्तर

आपको शेष ६०/५० कैसे प्राप्त करना चाहिए?

मान लीजिए x ६० है। ५० को x से घटाइए जब तक कि x ५० से कम न हो। घटावों की संख्या (१) विभाजन का परिणाम है और जो शेष है (१०) शेष है। विभाजन परिणाम पूर्ण बसों की संख्या है, और शेष अंतिम बस में कब्जे वाली सीटों की संख्या है।

1
eerorika 5 सितंबर 2021, 08:53

उदाहरण के लिए मान लें कि प्रत्येक बस में 50 सीटें हैं, और आपका इनपुट 110 है। जब आप इनपुट को max_cap से विभाजित करते हैं, तो आपको 2 मिलेगा, जब आप परिणाम (2) को max_cap से गुणा करते हैं, तो आपको 100 मिलेगा। जब आप इनपुट से परिणाम घटाते हैं, आपको 10 मिलेगा।

int main()
{    
    int input = 110; // passenger number
    constexpr int max_cap = 50; // bus capacity
    
    int full_buses = input / max_cap; // +1 is the number of required buses
    int remainder = input - (full_buses * max_cap); // the number of passengers in the last bus
    int free_seats_in_the_last_bus = max_cap - remainder;
}

संक्षेप में, यह वही मोडुलो ऑपरेटर (%) है:

int main()
{
    int input = 110; // passenger number
    constexpr int max_cap = 50; // bus capacity

    int remainder = input % max_cap; // the number of passengers in the last bus
    int free_seats_in_the_last_bus = max_cap - remainder;
}
1
Amit G. 5 सितंबर 2021, 09:34

मॉड्यूलो को बेहतर ढंग से समझने के लिए आप बस घटा सकते हैं। 50 घटाएं जब तक कि आप 50 घटा नहीं सकते या आपको एक ऋणात्मक संख्या प्राप्त होगी। और यह आपका परिणाम होगा।

उदाहरण 60%50:
60-50 = 10
नकारात्मक प्राप्त किए बिना १० में से ५० घटाना संभव नहीं है इसलिए १० आपका परिणाम है।

उदाहरण 100%50:
१००-५० = ५०
50-50= 0
ऋणात्मक हुए बिना 0 में से 50 घटाना संभव नहीं है इसलिए आपका परिणाम 0 . है

उदाहरण 40%50:
40-50 नकारात्मक है इसलिए आपका परिणाम 40 . है

0
Koronis Neilos 5 सितंबर 2021, 08:58