c standard library sort function from programming pearls -


<पूर्व> #include & lt; एल्गोरिथम & gt; # शामिल करें & lt; stdio.h & gt; # शामिल करें & lt; iostream & gt; Int intcomp (int * x, int * y) {वापसी * ​​x- * y;}; इंट एक [10000]; Int मुख्य (शून्य) {int i; Int n = 0; जबकि (स्कैनफ़ ("% d", और [एन])! = EOF) n ++; qsort (एक, एन, sizeof (int), intcomp); के लिए (इंट i = 0; i & lt; n; i ++) प्रिंटफ़ ("% d \ n", एक [i]); वापसी 0; }

यह सिर्फ कोड की प्रतिलिपि है I में दो प्रश्न हैं I यह दिखाता है कि intcomp इस कोड में असंगत है और क्या intcomp फ़ंक्शन भी करता है? और यह भी है कि विंडोज़ 7 ईओएफ में क्या है? कैसे प्रोग्राम बताता है कि यह EOF तक पहुंच गया है?

सबसे पहले: सवाल सी + + लेबल और आप # शामिल हैं & LT; एल्गोरिथ्म & gt; और & lt; iostream & gt ;, लेकिन आपका कोड 100% सी है।

मार्टिन यॉर्क ने पहले से ही उत्तर दिया है कि कैसे आप qsort () को पास किए गए फ़ंक्शन के हस्ताक्षर को सही कर सकते हैं।

हालांकि , "सच्चे" (टीएम) सी ++ समाधान, क्यूएसोर्ट के बजाय std :: sort & lt;> का उपयोग करने के लिए होगा!

  #include & lt; एल्गोरिथम & gt; # शामिल करें & lt; stdio.h & gt; Bool intcomp (int a, int b) {वापस एक & lt; b; } एक [10000]; Int मुख्य (शून्य) {int n = 0; जबकि (स्कैनफ़ ("% d", और [एन])! = EOF) n ++; Std :: sort (& amp; एक [0], & amp; एक [एन], intcomp); के लिए (इंट i = 0; i & lt; n; i ++) प्रिंटफ़ ("% d \ n", एक [i]); वापसी 0; }  

ध्यान दें कि incomp () ints लेता है और नहीं int pointers, और एक bool रिटर्न बस ऑपरेटर की तरह & lt; () होता।

यह भी ध्यान रखें कि इस मामले में, आप intcomp को भूल सकते हैं और बस std :: sort (& amp; एक [0], & amp; a [n]) का उपयोग कर सकते हैं, जो std :: less & lt;> का उपयोग करेगा, जो ऑपरेटर का उपयोग करेगा & lt; (int, int)।


Comments