Yêu cầu:
– Cho mảng số thực
– Tìm [a, b] (a, b nguyên) sao cho các phần tử của mảng nằm trong đoạn [a, b]
Giải thuật:
– Tìm giá trị min, max của các phần tử trong mảng
– Làm tròn 2 giá trị min, max thành kiểu nguyên
Ví dụ:
– Mảng A = {1.56, -2.56, 0, -4,98, 12.7}
– min = -4, 98, max = 12.7
– a = floor(min) = -5, b = ceil(max) = 13
Code
/************************************************************ * Author: VNCODING * History * 2016/12/21 first create VNCODING *************************************************************/ #include <stdio.h> #include <conio.h> #include <math.h> #define MAX_SIZE_ARR 100 void find_range_contain_arr(float*, int, int*, int*); int main() { float arr[MAX_SIZE_ARR], x, res; int n, i; int a, b; do { printf("n = "); scanf("%d", &n); }while(n <= 0 || n > 100); // Input array for(i = 0; i < n; i++) { printf("\narr[%d] = ", i); scanf("%f", &arr[i]); } find_range_contain_arr(arr, n, &a, &b); printf("[%d, %d] contains array", a, b); getch(); return 0; } void find_range_contain_arr(float arr[], int sz, int* a, int* b) { int i; float fa, fb; fa = fb = arr[0]; for (int i = 1; i < sz; i++) { if(fa > arr[i]) { fa = arr[i]; } if (fb < arr[i]) { fb = arr[i]; } } // Ceil and floor *a = (int)floor(fa); *b = (int)ceil(fb); }
Kết quả:
Leave a Reply
You must be logged in to post a comment.