Функция: подсчитать количество чисел, превышающих среднее арифметическое значение элементов массива - C (СИ)
Формулировка задачи:
Добрый вечер!Преподаватель дал новую тему,но объяснений по ней-ноль
Может кто-нибудь помочь с этой задачей?
Вот условие:Создать функцию, которая в одномерном массиве подсчитывает количество чисел, превышающих среднее арифметическое значение элементов массива. Определить в матрице строки, в которых количество элементов, превышающих среднее значение, максимально и минимально
Решение задачи: «Функция: подсчитать количество чисел, превышающих среднее арифметическое значение элементов массива»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define L 12
#define M 14
int f(int *arr, int size)
{
int avg = 0;
for (int i = 0; i < size; i++)
avg += arr[i];
avg /= size;
int count = 0;
for (int i = 0; i < size; i++)
if (arr[i] > avg) count++;
return count;
}
int main(void)
{
int matrix[L][M];
srand(time(NULL));
for (int i = 0; i < L; i++)
for (int j = 0; j < M; j++)
matrix[i][j] = rand() % 100;
for (int i = 0; i < L; i++, printf("\n"))
for (int j = 0; j < M; j++)
printf("%3d ", matrix[i][j]);
int maxNo = 0;
int minNo = maxNo;
int max = f(matrix[0], M);
int min = max;
int count = 0;
for (int i = 1; i < L; i++) {
count = f(matrix[i], M);
if (max < count) {
max = count;
maxNo = i;
}
if (min > count) {
min = count;
minNo = i;
}
}
printf("minNo: %d, maxNo: %d\n",minNo, maxNo);
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем размер массива (L, M)
- Определяем функцию f, которая принимает два аргумента: указатель на массив и его размер
- Внутри функции инициализируем переменную avg для хранения среднего значения
- С помощью цикла for проходим по всем элементам массива и суммируем их значения в переменную avg
- Делим полученную сумму на размер массива для получения среднего значения
- Инициализируем переменную count для хранения количества чисел, превышающих среднее значение
- С помощью цикла for проходим по всем элементам массива и сравниваем их значения со средним значением. Если число больше среднего, увеличиваем значение переменной count на 1
- Возвращаем значение переменной count из функции
- В функции main инициализируем массив matrix случайными значениями с помощью функции rand()
- С помощью двух вложенных циклов for выводим значения массива на экран, добавляя символ пробела после каждого числа
- Инициализируем переменные maxNo, minNo, max и min для хранения минимального и максимального количества чисел в массиве и их индексов
- С помощью цикла for проходим по всем элементам массива, начиная со второго, и находим максимальное и минимальное количество чисел в массиве
- Выводим на экран значения переменных minNo и maxNo, которые содержат индексы минимального и максимального количества чисел в массиве
- Возвращаем 0 из функции main, чтобы указать на успешный конец работы программы