Vấn đề
Tìm ra giá trị lớn nhất và tối thiểu từ một mảng sử dụng cấp phát bộ nhớ động trong C.
Giải pháp
Cấp phát bộ nhớ động cho phép các lập trình viên C cấp phát bộ nhớ trong thời gian chạy.
Các chức năng khác nhau mà chúng tôi đã sử dụng để cấp phát bộ nhớ động vào thời gian chạy là -
-
Malloc () - cấp phát một khối bộ nhớ theo byte trong thời gian chạy.
-
Calloc () - cấp phát các khối bộ nhớ liên tục trong thời gian chạy.
-
Realloc () - được sử dụng để giảm (hoặc) mở rộng bộ nhớ được cấp phát.
-
Free () - deal phân bổ không gian bộ nhớ được cấp phát trước đó.
Tìm số lớn nhất và nhỏ nhất trong một mảng bằng cách sử dụng cấp phát bộ nhớ động
Logic để tìm phần tử tối đa trong một mảng -
Đầu tiên cấp phát bộ nhớ cho mảng
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);
} Logic để tìm phần tử tối thiểu trong một mảng -
for(i=0;i<n;i++){
scanf("%d",p+i);
if(*(p+i)<min) //finding min element
min=*(p+i);
} Ví dụ
#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);
} Đầu ra
enter size: enter elements: maximum=-32768 minimum=32767