ปัญหา
ค้นหาค่าสูงสุดและต่ำสุดจากอาร์เรย์โดยใช้การจัดสรรหน่วยความจำแบบไดนามิกใน 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