Простая задача на функции - C (СИ) (70266)
Формулировка задачи:
Данные натуральные числа n, m (n, m> 2), действительные числа А1, А2, ..., Аn; В1, В2, .., Bm; С1, С2, ..., С11. Вычислить L = mах [min (В1, В2, ..,, Вm), min (С1, С2, ..., С11), min (А1, А2, ..., Аn)].
Поиск минимального элемента в массиве оформить в виде подпрограммы.
Указание. тип (А1, А2, ..., Аn) - минимальный элемент в массиве А1, А2, ..., Аn. Сначала находим минимальный элемент в каждом массиве, затем из найденных трех чисел выбираем максимальное.
использовать исключительно функции нужно
Решение задачи: «Простая задача на функции»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
double min_arr(double *mas, int mas_size)
{
double min = mas[0];
int i = 0;
for(i=0; i < mas_size; i++)
if(mas[i]<min)
min = mas[i];
return min;
}
double max_num(double a, double b, double c)
{
double max = 0;
if(a > b && a > c)
max = a;
else if(b > a && b > c)
max = b;
else
max = c;
return max;
}
int main()
{
int n,m;
int i;
double C[11];
double *A,*B;
double min1, min2, min3, max;
printf("n = ");
scanf("%d", &n);
printf("m = ");
scanf("%d", &m);
if(n <= 2 || m <= 2)
return 1;// Выходим
A = (double*)calloc(n, sizeof(double));
B = (double*)calloc(m, sizeof(double));
printf("Input A:\n");
for(i = 0; i < n; i++)
scanf("%lf",&A[i]);
printf("Input B:\n");
for(i = 0; i < m; i++)
scanf("%lf",&B[i]);
printf("Input C:\n");
for(i = 0; i < 11; i++)
scanf("%lf",&C[i]);
min1 = min_arr(A,n);
min2 = min_arr(B,m);
min3 = min_arr(C,11);
printf("minA = %lf, minB = %lf, minC = %lf \n", min1, min2, min3);
max = max_num(min1, min2, min3);
printf("max[minA, minB, minC] = %lf", max);
free(A);
free(B);
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с математическими функциями и для работы с памятью
- Функция min_arr принимает на вход массив чисел и его размер. Находит минимальное значение в массиве
- Функция max_num принимает на вход три числа и возвращает наибольшее из них
- В функции main считываем два числа n и m с помощью функции scanf. Проверяем, что они больше или равны 2, иначе выходим из программы
- Выделяем память под массивы A и B с помощью функции calloc. Если память выделить не удалось, то выходим из программы
- Считываем значения в массивы A и B с помощью функции scanf
- Считываем значения в массив C с помощью функции scanf
- Находим минимальное значение в массиве A, B и C с помощью функции min_arr и сохраняем их в переменные min1, min2 и min3 соответственно
- Находим максимальное значение из min1, min2 и min3 с помощью функции max_num и сохраняем его в переменную max
- Выводим значения min1, min2, min3 и max на экран с помощью функции printf
- Освобождаем память, выделенную под массивы A и B, с помощью функции free
- Возвращаем 0 из функции main, что означает успешный вывод данных