সমস্যা
C-তে গতিশীল মেমরি বরাদ্দ ব্যবহার করে একটি অ্যারে থেকে সর্বাধিক এবং সর্বনিম্ন খুঁজে বের করুন।
সমাধান
ডায়নামিক মেমরি বরাদ্দ সি প্রোগ্রামারদের রানটাইমে মেমরি বরাদ্দ করতে সক্ষম করে।
বিভিন্ন ফাংশন যা আমরা রান টাইমে গতিশীলভাবে মেমরি বরাদ্দ করতে ব্যবহার করি তা হল −
-
malloc () - রানটাইমে বাইটে মেমরির একটি ব্লক বরাদ্দ করে।
-
কলক () - রানটাইমে মেমরির অবিচ্ছিন্ন ব্লকগুলি বরাদ্দ করে।
-
realloc () − বরাদ্দ করা মেমরি কমাতে (বা) প্রসারিত করতে ব্যবহৃত হয়।
-
বিনামূল্যে () − পূর্বে বরাদ্দকৃত মেমরির স্থান ডিলকেট করে।
ডাইনামিক মেমরি বরাদ্দ ব্যবহার করে একটি অ্যারেতে সর্বাধিক এবং সর্বনিম্ন সংখ্যা সন্ধান করা
একটি অ্যারের মধ্যে সর্বাধিক উপাদান খুঁজে পাওয়ার যুক্তি -
প্রথমে অ্যারেতে মেমরি বরাদ্দ করুন
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