ปัญหา
ค้นหาค่าสูงสุดและต่ำสุดจากอาร์เรย์โดยใช้การจัดสรรหน่วยความจำแบบไดนามิกใน C
วิธีแก้ปัญหา
การจัดสรรหน่วยความจำแบบไดนามิกช่วยให้โปรแกรมเมอร์ C สามารถจัดสรรหน่วยความจำได้ในขณะใช้งานจริง
ฟังก์ชันต่างๆ ที่เราใช้ในการจัดสรรหน่วยความจำแบบไดนามิก ณ รันไทม์คือ −
-
malloc () - จัดสรรบล็อกของหน่วยความจำเป็นไบต์ที่รันไทม์
-
Calloc () - จัดสรรบล็อกต่อเนื่องของหน่วยความจำที่รันไทม์
-
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