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

सी प्रोग्राम वैरिएडिक फ़ंक्शंस के साथ योग, अधिकतम और न्यूनतम खोजने के लिए

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

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

  • va_start :यह वेरिएबल तर्क एपी वेरिएबल को एक्सेस करना शुरू कर देगा

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

  • va_end :यह चर तर्क सूची तक पहुँच समाप्त करता है

इसलिए, अगर हम −;

. जैसे फंक्शन कहते हैं
  • योग(5, 5, 2, 8, 9, 3)
  • अधिकतम(3, 5, 9, 2)
  • मिनट(6, 8, 5, 2, 6, 7, 9)

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

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

फ़ंक्शन योग () को परिभाषित करें, इसमें तर्कों की cnt, और चर संख्या की आवश्यकता होगी

  • va_list एपी परिभाषित करें
  • va_start(ap, cnt) द्वारा एपी को इनिशियलाइज़ करें
  • n :=0
  • इनिशियलाइज़ i :=0 के लिए, जब i
  • n :=n + अगला तर्क va_arg(ap, int) द्वारा
  • va_end(ap) द्वारा एपी एक्सेस करना समाप्त करें
  • वापसी n
  • एक फ़ंक्शन को परिभाषित करें min(), इसमें cnt, और तर्कों की चर संख्या की आवश्यकता होगी
  • va_list एपी परिभाषित करें
  • va_start(ap, cnt) द्वारा एपी को इनिशियलाइज़ करें
  • न्यूनतम:=99999
  • इनिशियलाइज़ i :=0 के लिए, जब i
  • वर्तमान:=va_arg(ap, int) द्वारा अगला तर्क
  • यदि वर्तमान <न्यूनतम है, तो:
    • न्यूनतम :=वर्तमान
  • va_end(ap) द्वारा एपी एक्सेस करना समाप्त करें
  • न्यूनतम वापसी
  • एक फ़ंक्शन अधिकतम () को परिभाषित करें, इसमें cnt, और तर्कों की चर संख्या होगी
  • va_list एपी परिभाषित करें
  • va_start(ap, cnt) द्वारा एपी को इनिशियलाइज़ करें
  • अधिकतम:=0
  • इनिशियलाइज़ i :=0 के लिए, जब i
  • वर्तमान:=va_arg(ap, int) द्वारा अगला तर्क
  • यदि वर्तमान> अधिकतम, तो:
    • अधिकतम:=वर्तमान
  • va_end(ap) द्वारा एपी एक्सेस करना समाप्त करें
  • अधिकतम वापसी
  • उदाहरण

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

    #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 में कक्षों की श्रेणी पर गणितीय गणना करें। सबसे आम कार्य SUM हैं , औसत , COUNT , मिनट , और अधिकतम . यदि कोई व्यक्ति अपने डेटा का औसत, न्यूनतम या अधिकतम पता लगाना चाहता है, तो वे औसत का उपयोग कर सकते हैं , मिनट , और अधिकतम कार्य . इस पोस्ट में, हम आपको दिखाते हैं कि एक्सेल में औसत, न्यूनत

    1. पायथन में बाएं और दाएं सबट्री योग के साथ मूल्यों को अपडेट करके एक पेड़ खोजने का कार्यक्रम

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

    1. पायथन प्रोग्राम में अधिकतम उत्पाद और एन के बराबर योग के साथ एन के चार कारक खोजें

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