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

सी ++ में टेस्ट केस जेनरेट करना (जेनरेट () और जेनरेट_एन ())


इस खंड में हम देखेंगे कि हम परीक्षण मामलों को उत्पन्न करने के लिए C++ STL फ़ंक्शन का उपयोग कैसे कर सकते हैं। कभी-कभी सरणी कार्यक्रमों के लिए परीक्षण मामले उत्पन्न करना बहुत जटिल और अक्षम प्रक्रिया हो सकती है। C++ टेस्ट केस जनरेट करने के लिए दो तरीके प्रदान करता है। ये तरीके इस प्रकार हैं -

उत्पन्न () विधि

C++ फ़ंक्शन std::algorithm::generate() पहले से अंतिम की सीमा में तत्वों को gen को क्रमिक कॉल द्वारा लौटाए गए मान को असाइन करता है। यह पहले तीन पैरामीटर लेता है, अंतिम और सामान्य, ये प्रारंभिक स्थिति के लिए आगे इटरेटर हैं, अंतिम स्थिति में पिछड़े पुनरावर्तक और जेनरेटर फ़ंक्शन जिसे बिना किसी तर्क के कहा जाता है, और वापसी मान।

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
int create_random() {
   return (rand() % 1000);
}
int main () {
   srand(time(NULL));
   vector<int> data(15);
   generate(data.begin(), data.end(), create_random);
   for (int i=0; i<data.size(); i++)
      cout << data[i] << " " ;
}

आउटपुट

449 180 785 629 547 912 581 520 534 778 670 302 345 965 107

जेनरेट_एन() विधि

C++ फ़ंक्शन std::algorithm::generate_n() पहले n तत्वों के लिए gen को लगातार कॉल द्वारा लौटाया गया मान निर्दिष्ट करता है। यह पहले तीन पैरामीटर लेता है, n और gen, ये प्रारंभिक स्थिति के लिए अग्रेषित पुनरावर्तक हैं, कॉल की संख्या होगी और जेनरेटर फ़ंक्शन जिसे बिना किसी तर्क के कहा जाता है, और वापसी मान।

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
int create_random() {
   return (rand() % 1000);
}
int main () {
   srand(time(NULL));
   vector<int> data(15);
   generate_n(data.begin(), 6, create_random);
   for (int i=0; i<data.size(); i++)
      cout << data[i] << " " ;
}

आउटपुट

540 744 814 771 254 913 0 0 0 0 0 0 0 0 0

  1. C++ में वृत्त और आयत ओवरलैपिंग

    मान लीजिए कि हमारे पास एक वृत्त है जिसे (त्रिज्या, xc, yc) के रूप में दर्शाया गया है, यहाँ (xc, yc) वृत्त का केंद्र निर्देशांक है। हमारे पास एक अक्ष-संरेखित आयत भी है जिसे (x1, y1, x2, y2) के रूप में दर्शाया गया है, जहाँ (x1, y1) निचले-बाएँ कोने के निर्देशांक हैं, और (x2, y2) शीर्ष-दाएँ के निर्देशां

  1. डोमिनोज़ और ट्रोमिनो टाइलिंग सी++ . में

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

  1. सी ++ और सी # में फ़ोरैच

    C++ में Foreach C++ 11 ने प्रत्येक तत्व को पार करने के लिए फ़ोरैच लूप पेश किया। यहाँ एक उदाहरण है - उदाहरण #include <iostream> using namespace std; int main() {    int myArr[] = { 99, 15, 67 };    // foreach loop    for (int ele : myArr)    cout <&