Простая задача на функции - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с математическими функциями и для работы с памятью
  2. Функция min_arr принимает на вход массив чисел и его размер. Находит минимальное значение в массиве
  3. Функция max_num принимает на вход три числа и возвращает наибольшее из них
  4. В функции main считываем два числа n и m с помощью функции scanf. Проверяем, что они больше или равны 2, иначе выходим из программы
  5. Выделяем память под массивы A и B с помощью функции calloc. Если память выделить не удалось, то выходим из программы
  6. Считываем значения в массивы A и B с помощью функции scanf
  7. Считываем значения в массив C с помощью функции scanf
  8. Находим минимальное значение в массиве A, B и C с помощью функции min_arr и сохраняем их в переменные min1, min2 и min3 соответственно
  9. Находим максимальное значение из min1, min2 и min3 с помощью функции max_num и сохраняем его в переменную max
  10. Выводим значения min1, min2, min3 и max на экран с помощью функции printf
  11. Освобождаем память, выделенную под массивы A и B, с помощью функции free
  12. Возвращаем 0 из функции main, что означает успешный вывод данных

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы