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