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