Friday 15 August 2014

c++ - I'm trying to get a random order of numbers 1:16 using srand and rand. The code works as expected but only up to the 12th iteration.Why? -


<पूर्व> #include "stdafx.h" #include & lt; iostream & gt; #include & lt; स्ट्रिंग & gt; # शामिल करें & lt; cstdlib & gt; # शामिल करें & lt; सेमीथ & gt; # शामिल करें & lt; ctime & gt; # शामिल करें & lt; एल्गोरिथम & gt; # शामिल & lt; इटरेटर & gt; Int _tmain (int argc, _TCHAR * argv []) {namespace std; इंट आव [] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; srand (समय (शून्य)); Int i = 0; करना {int r = rand ()% 16 + 1; Bool exista = ((शुरू (ord), अंत (ord), r)! = End (ord)); अगर (! अस्तित्व) {ord [i] = आर; Cout & lt; & lt; Ord [i] & lt; & lt; endl; i ++; cin.get (); }} जबकि ((शुरू (शुरू), अंत (ओर), 0)! = अंत (ord)); वापसी 0; }

12 नंबरों के बाद, कार्यक्रम से बाहर निकलता है और मुझे समझ में नहीं आ रहा है कि यह 16 पुनरावृत्तियों के बाद क्यों होना चाहिए।

इसका कारण यह है कि आपके पास ord में केवल 12 शून्य हैं और जब वे समाप्त हो जाते हैं (आपके मामले में 1 से 16 के अनूठे मूल्यों से भरा हुआ लूप बंद हो जाता है (क्योंकि वहां खोज करने के लिए कोई और शून्य नहीं है।

ord से

  आर्गुआ [] = {0,0, 0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}  

या

 <कोड > यदि आप केवल उन संख्याओं को बेतरतीब ढंग से फेरबदल करना चाहते हैं तो मैं  & lt; एल्गोरिथम & gt; 


No comments:

Post a Comment