Поиск максимальных элементов одномерных массивов - C (СИ)
Формулировка задачи:
Даны два одномерных массива, состоящие не более чем из 30 элементов каждый. Использовав подпрограмму поиска максимального элемента, найти половину от сумы максимальных элементов заданных массивов
Решение задачи: «Поиск максимальных элементов одномерных массивов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
float max_arr(float *arr, int n)
{
int i;
float max = arr[0];
for(i=1;i<n;i++)
if(arr[i] > max)
max = arr[i];
return max;
}
int main()
{
float *a, *b;
int i,n;
printf("n = ");
scanf("%d", &n);
if(n<=0 || n>30)
return 1;
a = calloc(n, sizeof(*a));
b = calloc(n, sizeof(*b));
printf("Input a:\n");
for(i=0;i<n;i++)
scanf("%f",&a[i]);
printf("Input b:\n");
for(i=0;i<n;i++)
scanf("%f",&b[i]);
printf("(max_a + max_b) / 2 = %f", (max_arr(a,n) + max_arr(b,n))/2.0);
free(a);
free(b);
return 0;
}
Объяснение кода листинга программы
- В функции
max_arrищется максимальное значение в массивеarrс помощью циклаfor. - Переменная
maxинициализируется значением первого элемента массиваarr. - Затем происходит сравнение каждого элемента массива с переменной
max. Если текущий элемент большеmax, то он становится новым значениемmax. - В функции
mainпроисходит запрос на ввод количества элементов массиваn. - Затем происходит проверка на корректность введенного значения
n. Если оно некорректно, программа завершается с кодом ошибки 1. - С помощью функции
callocвыделяется память под два массиваaиbпоnэлементов каждый. - Затем происходит запрос на ввод значений для массивов
aиb. - Вызывается функция
max_arrдля поиска максимального значения в массивахaиb. - Результат вычисления
(max_arr(a,n) + max_arr(b,n))/2выводится на экран. - С помощью функции
freeосвобождается память, выделенная под массивыaиb. - Программа завершается с кодом 0, указывающим на успешное выполнение.