समस्या
सी में डायनेमिक मेमोरी आवंटन का उपयोग करके किसी सरणी से अधिकतम और न्यूनतम का पता लगाएं।
समाधान
गतिशील स्मृति आवंटन सी प्रोग्रामर को रनटाइम पर स्मृति आवंटित करने में सक्षम बनाता है।
रन टाइम में गतिशील रूप से मेमोरी आवंटित करने के लिए हम जिन विभिन्न कार्यों का उपयोग करते हैं, वे हैं -
-
मॉलोक () - रनटाइम पर मेमोरी के एक ब्लॉक को बाइट्स में आवंटित करता है।
-
कॉलोक () - रनटाइम पर मेमोरी के निरंतर ब्लॉक आवंटित करता है।
-
रीयलोक () - आवंटित मेमोरी को कम करने (या) बढ़ाने के लिए उपयोग किया जाता है।
-
मुक्त () - पहले से आवंटित स्मृति स्थान को हटा देता है।
डायनामिक मेमोरी आवंटन का उपयोग करके किसी सरणी में अधिकतम और न्यूनतम संख्या ढूँढना
किसी सरणी में अधिकतम तत्व खोजने का तर्क -
पहले ऐरे को मेमोरी आवंटित करें
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