Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

वेरिएडिक फंक्शन का उपयोग करके योग, अधिकतम और न्यूनतम ज्ञात करने के लिए C प्रोग्राम


मान लीजिए हम कुछ ऐसे फंक्शन बनाना चाहते हैं जो कई आर्गुमेंट ले सकें, आर्गुमेंट की कोई निश्चित संख्या नहीं है। हम तीन फंक्शन sum(), max() और min() बनाना चाहते हैं, जो क्रमशः संख्याओं का योग, अधिकतम संख्या और दी गई संख्याओं का न्यूनतम ज्ञात कर सकें। इनमें से प्रत्येक फंक्शन अपने पहले आर्गुमेंट के रूप में आर्गुमेंट की संख्या count लेगा। इस प्रकार के फंक्शन को परिभाषित करने के लिए हमें फंक्शन आर्गुमेंट में ellipsis (...) यानी तीन डॉट्स का उपयोग करना होगा। इसका उपयोग करने के लिए हमें stdarg.h हेडर फाइल शामिल करनी होगी। इस प्रकार के फंक्शन को वेरिएडिक फंक्शन कहा जाता है। वेरिएबल आर्गुमेंट तक पहुंचने के लिए चार अलग-अलग चीजें हैं जिन पर हम ध्यान दे सकते हैं:

  • va_list: यह दिए गए सभी आर्गुमेंट को स्टोर करता है

  • va_start: यह वेरिएबल आर्गुमेंट ap वेरिएबल को एक्सेस करना शुरू करता है

  • va_arg: इसका उपयोग दिए गए प्रकार के अगले आर्गुमेंट को प्राप्त करने के लिए किया जाता है

  • va_end: यह वेरिएबल आर्गुमेंट लिस्ट को एक्सेस करना समाप्त करता है

इसलिए, यदि हम फंक्शन को इस तरह कॉल करते हैं:

  • sum(5, 5, 2, 8, 9, 3)
  • max(3, 5, 9, 2)
  • min(6, 8, 5, 2, 6, 7, 9)

तो आउटपुट होगा 27 (सभी पांच संख्याओं का योग), 9 (दी गई तीन संख्याओं का अधिकतम), 2 (दी गई छह संख्याओं का न्यूनतम)।

हल करने के चरण

sum() फंक्शन परिभाषित करें, जो cnt और वेरिएबल संख्या में आर्गुमेंट लेगा

  • va_list ap परिभाषित करें
  • va_start(ap, cnt) द्वारा ap को इनिशियलाइज़ करें
  • n := 0
  • i := 0 से शुरू करें, जब i < cnt, i को 1 से बढ़ाते हुए करें:
    • n := n + va_arg(ap, int) द्वारा अगला आर्गुमेंट
  • va_end(ap) द्वारा ap को एक्सेस करना समाप्त करें
  • n वापस करें
  • min() फंक्शन परिभाषित करें, जो cnt और वेरिएबल संख्या में आर्गुमेंट लेगा
  • va_list ap परिभाषित करें
  • va_start(ap, cnt) द्वारा ap को इनिशियलाइज़ करें
  • minimum := 99999
  • i := 0 से शुरू करें, जब i < cnt, i को 1 से बढ़ाते हुए करें:
    • current := va_arg(ap, int) द्वारा अगला आर्गुमेंट
    • यदि current < minimum, तो minimum := current
  • va_end(ap) द्वारा ap को एक्सेस करना समाप्त करें
  • minimum वापस करें
  • max() फंक्शन परिभाषित करें, जो cnt और वेरिएबल संख्या में आर्गुमेंट लेगा
  • va_list ap परिभाषित करें
  • va_start(ap, cnt) द्वारा ap को इनिशियलाइज़ करें
  • maximum := 0
  • i := 0 से शुरू करें, जब i < cnt, i को 1 से बढ़ाते हुए करें:
    • current := va_arg(ap, int) द्वारा अगला आर्गुमेंट
    • यदि current > maximum, तो maximum := current
  • va_end(ap) द्वारा ap को एक्सेस करना समाप्त करें
  • maximum वापस करें

उदाहरण

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

#include <stdio.h> #include <stdarg.h> int sum (int cnt,...) {     va_list ap;     int i, n;     va_start(ap, cnt);     n = 0;     for (i=0;i<cnt;i++){         n += va_arg(ap, int);      }     va_end(ap);     return n; } int min(int cnt,...) {     va_list ap;     int i, current, minimum;     va_start(ap, cnt);     minimum = 99999;     for (i=0;i<cnt;i++){         current = va_arg(ap, int);         if (current < minimum)             minimum = current;     }     va_end(ap);     return minimum; } int max(int cnt,...) {     va_list ap;     int i, current, maximum;     va_start(ap, cnt);     maximum = 0;     for (i=0;i<cnt;i++){         current = va_arg(ap, int);           if (current > maximum)             maximum = current;     }     va_end(ap);     return maximum; } int main(){     printf("%d\n",sum(5, 5, 2, 8, 9, 3));     printf("%d\n",max(3, 5, 9, 2));     printf("%d\n",min(6, 8, 5, 2, 6, 7, 9)); } 

इनपुट

sum(5, 5, 2, 8, 9, 3) max(3, 5, 9, 2) min(6, 8, 5, 2, 6, 7, 9)

आउटपुट

27 9 2

  1. Excel में MIN, MAX, और AVERAGE फ़ंक्शन का उपयोग कैसे करें Excel में MIN, MAX, और AVERAGE फ़ंक्शन का उपयोग कैसे करें

    फ़ंक्शन्स Excel में सेल की एक श्रृंखला पर गणितीय गणना करते हैं। सबसे आम फ़ंक्शन्स हैं SUM, AVERAGE, COUNT, MIN, और MAX। यदि कोई व्यक्ति अपने डेटा का औसत, न्यूनतम, या अधिकतम ढूंढना चाहता है, तो वे AVERAGE, MIN, और MAX फ़ंक्शन्स का उपयोग कर सकते हैं। इस पोस्ट में, हम आपको दिखाते हैं कि Excel में औसत,

  1. पायथन में बाइनरी ट्री के मानों को बाएं और दाएं सबट्री के योग के साथ अद्यतन करने का प्रोग्राम पायथन में बाइनरी ट्री के मानों को बाएं और दाएं सबट्री के योग के साथ अद्यतन करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें वही ट्री ढूंढना है लेकिन प्रत्येक नोड का मान उसके अपने मान + उसके बाएं और दाएं सबट्री के सभी योगों से बदल दिया जाता है। उदाहरण के लिए, यदि इनपुट जैसा है: तो आउटपुट होगा: इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: एक फंक्शन tree_sum() परिभाषित कर

  1. - Python प्रोग्राम में N के चार गुणनखोजें जिनका अधिकतम गुणनफल और योग N के बराबर हो - सेट-2

    मान लीजिए हमारे पास एक संख्या N है, हमें N के सभी गुणनखोजने हैं और N के चार गुणनखोजने का गुणनफल वापस करना है जैसे कि: चार गुणनखोजने का योग N के समान है। चार गुणनखोजने का गुणनफल अधिकतम है। उत्पाद को अधिकतम करने के लिए सभी चार गुणनखोजने एक-दूसरे के बराबर हो सकते हैं। 1 2 3 4 5 6 10 12 15 20 30 60 और