Problem

1/1

गतिशील सरणी: प्रारंभ करें

Theory Click to read/hide

गतिशील सरणियाँ
सरणी पर पिछले पाठ्यक्रमों में, हमने इस तरह से एक सरणी बनाने पर ध्यान दिया:
 
कॉन्स्ट इंट एनएमएक्स = 1000; इंट ए [एनएमएक्स]; या यह: intA[1000];
यह विधि एक स्थैतिक सरणी बनाती है। एक नुकसान यह है कि कार्यक्रम के चलने के दौरान सरणी तत्वों के आकार और प्रकार को बदला नहीं जा सकता है। 
उपरोक्त उदाहरण में, 1000 तत्वों की एक स्थिर सरणी बनाई गई है। अर्थात, प्रकार int (प्रकार int के 1000 तत्वों की एक सरणी) के 1000 तत्वों को संग्रहीत करने के लिए स्मृति में एक क्षेत्र आवंटित किया जाता है। सरणी की शुरुआत का पता  A चर में संग्रहीत होता है। यदि आपको 1000 से अधिक तत्वों की एक सरणी को संसाधित करने की आवश्यकता है, तो आपको विवरण बदलना होगा और प्रोग्राम को फिर से कंपाइल करना होगा। छोटी सरणियों के साथ काम करते समय, स्थिर सरणी के लिए आवंटित अधिकांश मेमोरी बर्बाद हो जाएगी।

कंप्यूटर मेमोरी के कुशल उपयोग के लिए, इसे गतिशील रूप से आवंटित करना आवश्यक है। दूसरे शब्दों में, कार्यक्रम के निष्पादन के दौरान आवश्यकतानुसार वस्तुओं के लिए मेमोरी आवंटित की जानी चाहिए (नई वस्तुओं का निर्माण)।

C++ में,   ऑपरेशन <कोड>नया  मुक्त मेमोरी क्षेत्र से मेमोरी आवंटित करता है, और ऑपरेशन डिलीट आवंटित मेमोरी को हटा देता है। 
 
डायनेमिक वेरिएबल बनाने और हटाने का एक उदाहरण
इंट * ए = नया इंट; // प्रकार int का एक वस्तु बनाएँ *ए = 15; // ऑब्जेक्ट इनिशियलाइज़ेशन एक पॉइंटर (*) के माध्यम से होता है // इनिशियलाइज़ेशन तुरंत किया जा सकता है // गतिशील वस्तु की घोषणा करते समय इंट * बी = नया इंट (25); cout << *ए << " " << *बी; // सूचक द्वारा आउटपुट मान मिटाना; // मुक्त आवंटित स्मृति बी हटाएं; ऑपरेशन नया दिए गए प्रकार का एक ऑब्जेक्ट बनाता है, इसके लिए मेमोरी आवंटित करता है, और दिए गए मेमोरी स्थान पर सही प्रकार का पॉइंटर लौटाता है। यदि मेमोरी आवंटित नहीं की जा सकती है, उदाहरण के लिए, यदि कोई मुक्त क्षेत्र नहीं है, तो एक शून्य सूचक लौटाया जाता है, अर्थात, सूचक 0 मान लौटाएगा। स्मृति आवंटन किसी भी प्रकार के डेटा के लिए संभव है: int फ्लोट , डबलchar आदि।

उसी तरह, C++ में आप एक डाइनैमिक ऐरे बना सकते हैं जो डायनेमिक मेमोरी एलोकेशन का उपयोग करेगा। ऐसे ऐरे का आकार, जिसका उपयोग प्रोग्राम के चलने के दौरान किया जा सकता है, उदाहरण के लिए, कीबोर्ड से डायनेमिक वेरिएबल्स बनाने के लिए।
 
C सिंटैक्स में
इंटएन; स्कैनफ़("%d", &एन); int * mas = malloc (sizeof(int) * N); // बाद में सरणी का आकार बदलने के लिए // realloc द्वारा उपयोग किया जाता है। ... मुक्त (मास); // आवंटित मेमोरी जारी करें <दिव>
C++ सिंटैक्स में
इंटएन; सिने>> एन; इंट * ए = नया इंट [एन]; // सरणी का आकार बदलने के लिए, आप कर सकते हैं // डेटा को किसी अन्य सरणी में स्थानांतरित करें, और पुराने को साफ़ करें ... हटाएं []मास; // आवंटित मेमोरी जारी करें // वर्ग कोष्ठक इंगित करते हैं // कि हम स्मृति को सरणी के नीचे से मुक्त कर रहे हैं

Problem

आपको पूर्णांकों का एक क्रम दिया गया है। एक प्रोग्राम लिखें जो एक सरणी बनाता है और इसे एक पंक्ति में दो बार अनुक्रम लिखता है।
 
इनपुट 
पहले दिया गया नंबर N — अनुक्रम में तत्वों की संख्या (1<= N <= 100)। फिर N संख्याओं को स्पेस से अलग करते हुए लिखा जाता है।
 
आउटपुट 
डुप्लिकेट किए गए अनुक्रम से युक्त सरणी को आउटपुट करना आवश्यक है।
 
उदाहरण
<टेबल क्लास = "टेबल-बॉर्डर्ड टेबल-लिस्ट-टेस्ट टेबल-एसएम टेबल-स्ट्राइप्ड"> <सिर> <वें># <वें>इनपुट <वें>आउटपुट <शरीर> 1 3
1 2 3 1 2 3 1 2 3