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

सी ++ में तर्कों की परिवर्तनीय संख्या

कभी-कभी, आप एक ऐसी स्थिति में आ सकते हैं, जब आप एक ऐसा फ़ंक्शन करना चाहते हैं, जो पैरामीटर की पूर्वनिर्धारित संख्या के बजाय तर्कों की चर संख्या, यानी पैरामीटर ले सकता है। सी/सी++ प्रोग्रामिंग भाषा इस स्थिति के लिए एक समाधान प्रदान करती है और आपको एक फ़ंक्शन को परिभाषित करने की अनुमति है जो आपकी आवश्यकता के आधार पर पैरामीटर की परिवर्तनीय संख्या को स्वीकार कर सकता है। निम्न उदाहरण ऐसे फ़ंक्शन की परिभाषा दिखाता है।

int func(int, ... ) {
   .
   .
   .
}
int main() {
   func(1, 2, 3);
   func(1, 2, 3, 4);
}

यह ध्यान दिया जाना चाहिए कि फ़ंक्शन func() का अपना अंतिम तर्क दीर्घवृत्त के रूप में है, अर्थात तीन बिंदु (...) और दीर्घवृत्त से ठीक पहले वाला हमेशा एक int होता है जो पारित कुल संख्या चर तर्कों का प्रतिनिधित्व करेगा। ऐसी कार्यक्षमता का उपयोग करने के लिए, आपको stdarg.h हेडर फ़ाइल का उपयोग करने की आवश्यकता है जो चर तर्कों की कार्यक्षमता को लागू करने के लिए फ़ंक्शन और मैक्रोज़ प्रदान करता है और दिए गए चरणों का पालन करता है -

  • किसी फ़ंक्शन को उसके अंतिम पैरामीटर के साथ दीर्घवृत्त के रूप में परिभाषित करें और दीर्घवृत्त के ठीक पहले वाला हमेशा एक int होता है जो तर्कों की संख्या का प्रतिनिधित्व करेगा।

  • एक va_list Create बनाएं फ़ंक्शन परिभाषा में चर टाइप करें। इस प्रकार को stdarg.h हेडर फ़ाइल में परिभाषित किया गया है।

  • int . का उपयोग करें पैरामीटर और va_start va_list . को प्रारंभ करने के लिए मैक्रो एक तर्क सूची के लिए चर। मैक्रो va_start को stdarg.h हेडर फ़ाइल में परिभाषित किया गया है।

  • va_arg Use का प्रयोग करें मैक्रो और va_list तर्क सूची में प्रत्येक आइटम तक पहुँचने के लिए चर।

  • मैक्रो का उपयोग करें va_end va_list . को सौंपी गई मेमोरी को साफ करने के लिए चर।

अब हम उपरोक्त चरणों का पालन करते हैं और एक सरल कार्य लिखते हैं जो मापदंडों की चर संख्या ले सकता है और उनका औसत वापस कर सकता है -

उदाहरण कोड

#include <iostream>
#include <cstdarg>
using namespace std;
double average(int num,...) {
   va_list valist;
   double sum = 0.0;
   int i;
   va_start(valist, num); //initialize valist for num number of arguments
   for (i = 0; i < num; i++) { //access all the arguments assigned to valist
      sum += va_arg(valist, int);
   }
   va_end(valist); //clean memory reserved for valist
   return sum/num;
}
int main() {
   cout << "Average of 2, 3, 4, 5 = "<< average(4, 2,3,4,5) << endl;
   cout << "Average of 5, 10, 15 = "<< average(3, 5,10,15)<< endl;
}

आउटपुट

Average of 2, 3, 4, 5 = 3.5
Average of 5, 10, 15 = 10

  1. जांचें कि क्या कोई संख्या सी ++ में एक रहस्य संख्या है

    यहां हम देखेंगे कि कैसे चेक किया जाए कि कोई नंबर मिस्ट्री नंबर है या नहीं। एक रहस्य संख्या एक संख्या है जिसे दो संख्याओं के योग द्वारा दर्शाया जा सकता है, और संख्याएं एक दूसरे के विपरीत होती हैं। आइए बेहतर विचार प्राप्त करने के लिए कोड देखें। हमें सभी जोड़ियों की जांच करनी है और निर्णय लेना है। उदाह

  1. C++ में CHAR_BIT

    CHAR_BIT चार में बिट्स की संख्या है। इसे C++ भाषा में “limits.h” हेडर फाइल में घोषित किया गया है। यह 8-बिट प्रति बाइट का होता है। यहाँ C++ भाषा में CHAR_BIT का एक उदाहरण दिया गया है, उदाहरण #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a

  1. हम C++ में वेरिएबल को इनिशियलाइज़ कैसे करते हैं?

    आप असाइनमेंट ऑपरेटर का उपयोग करके एक वेरिएबल को इनिशियलाइज़ कर सकते हैं या इसे इनिशियलाइज़ करते समय इसके कंस्ट्रक्टर का उपयोग कर सकते हैं। उदाहरण के लिए, int i = 0; MyClass instance(1, "Hello"); यह स्वचालित रूप से प्रारंभ हो जाएगा यदि यह एक क्लास/स्ट्रक्चर इंस्टेंस है जिसमें डिफॉल्ट कंस्