समस्या
सी में डायनेमिक मेमोरी आवंटन का उपयोग करके किसी सरणी से अधिकतम और न्यूनतम का पता लगाएं।
समाधान
गतिशील स्मृति आवंटन सी प्रोग्रामर को रनटाइम पर स्मृति आवंटित करने में सक्षम बनाता है।
रन टाइम में गतिशील रूप से मेमोरी आवंटित करने के लिए हम जिन विभिन्न कार्यों का उपयोग करते हैं, वे हैं -
-
मॉलोक () - रनटाइम पर मेमोरी के एक ब्लॉक को बाइट्स में आवंटित करता है।
-
कॉलोक () - रनटाइम पर मेमोरी के निरंतर ब्लॉक आवंटित करता है।
-
रीयलोक () - आवंटित मेमोरी को कम करने (या) बढ़ाने के लिए उपयोग किया जाता है।
-
मुक्त () - पहले से आवंटित स्मृति स्थान को हटा देता है।
डायनामिक मेमोरी आवंटन का उपयोग करके किसी सरणी में अधिकतम और न्यूनतम संख्या ढूँढना
किसी सरणी में अधिकतम तत्व खोजने का तर्क -
पहले ऐरे को मेमोरी आवंटित करें
p=(int*)malloc(n*sizeof(int)); //dynamic memory allocation for(i=0;i<n;i++){ scanf("%d",p+i); if(*(p+i)>max) //finding max element max=*(p+i); }
सरणी में न्यूनतम तत्व खोजने का तर्क -
for(i=0;i<n;i++){ scanf("%d",p+i); if(*(p+i)<min) //finding min element min=*(p+i); }
उदाहरण
#include<stdio.h> int main(){ int *p,n,i,max=-32768,min=32767; printf("\n enter size:"); scanf("%d",&n); p=(int*)malloc(n*sizeof(int)); //dynamic memory allocation printf("\n enter elements:"); for(i=0;i<n;i++){ scanf("%d",p+i); if(*(p+i)>max) //finding max element max=*(p+i); if(*(p+i)<min) //finding min element min=*(p+i); } printf("\n maximum=%d\n minimum=%d",max,min); free(p); }
आउटपुट
enter size: enter elements: maximum=-32768 minimum=32767