Мой вариант на C
| Код | #include <stdio.h> #include <time.h> #include <stdlib.h> #include <stdbool.h>
//----------------------------------------------// void Fill(int* array, size_t size) { size_t i; for (i=0; i<size; ++i) { array[i] = rand(); } } //----------------------------------------------// void Print(const int* array, size_t size) { size_t i; for (i=0; i<size; ++i) { printf("%d ", array[i]); } printf("\n"); } //----------------------------------------------// bool IsLeft(int a, int b) { return a > b; } //----------------------------------------------// bool IsRight(int a, int b) { return a < b; } //----------------------------------------------// int GetValue(const int* array, size_t size, bool (*func)(int, int)) { int val = 0;
if (size) { val = array[0]; size_t i; for (i=1; i<size; ++i) { if (func(val, array[i])) { val = array[i]; } } } return val; } //----------------------------------------------// int main() { srand(time(NULL));
size_t size; printf("array size: "); scanf("%u", &size);
int* array = (int*) malloc(sizeof(int) * size);
Fill(array, size); Print(array, size);
int min = GetValue(array, size, IsLeft); int max = GetValue(array, size, IsRight);
printf("%d + %d = %d\n", min, max, min+max); free(array);
system("pause"); return 0; }
|
|