Как сделать всю обработку массива через функцию? - C (СИ)
Формулировка задачи:
Всем привет!
Есть задание:
В двумерном массиве найти среднее арифметическое первого столбца и количество элементов в каждом из следующих
столбцов, превышающих среднее арифметическое предыдущего столбца.
Как сделать всю работу с массивом в функции?(чтоб в main был только ввод и вывод).Прошу помочь
Есть программа
#include<stdio.h>
#include <locale.h>
#define N 5
int main() {
setlocale(LC_ALL, "Ru");
int a[N][N];
double sum = 0;
double element;
int count = 0;
printf_s("Начальный массив:\n");
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
{
a[i][j] = rand() % 9 + 1;
printf_s("%d ", a[i][j]);
}
printf_s("\n");
}
for (int j = 1; j < N; ++j)
{
for (int i = 0; i < N; ++i)
sum += a[i][j - 1];
element = sum / N;
for (int i = 0; i < N; ++i)
if (a[i][j] > element)
++count;
printf_s("среднее арифметическое элементов %d ", j," - го столбца : ", element);
printf_s("\nколичство элементов %d ", j + 1, " - го столбца больших", element);
printf_s(": %d", count, "\n\n");
printf_s("\n");
}
system("PAUSE");
return 0;
}Решение задачи: «Как сделать всю обработку массива через функцию?»
textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
#include <locale.h>
#define N 5
void printmas(int (*a)[N])
{
printf("Начальный массив:\n");
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
{
a[i][j] = rand() % 9 + 1;
printf("%d ", a[i][j]);
}
printf("\n");
}
}
void mas(int (*a)[N])
{
double sum = 0,element;
int count = 0;
for (int j = 1; j < N; ++j)
{
for (int i = 0; i < N; ++i)
sum += a[i][j - 1];
element = sum / N;
for (int i = 0; i < N; ++i)
if (a[i][j] > element)
++count;
printf("среднее арифметическое элементов %d - го столбца %lf: ", j, element);
printf("\nколичство элементов %d - го столбца больших %lf: ",j + 1, element);
printf(": %d\n", count);
printf("\n");
count=0;
}
}
int main(void)
{
setlocale(LC_ALL, "Ru");
int a[N][N];
printmas(a);
mas(a);
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы.
- Определяется размер массива N.
- Создается функция printmas, которая принимает в качестве аргумента указатель на массив.
- В функции printmas происходит инициализация массива случайными числами от 1 до 9.
- Выводится начальный массив.
- Создается функция mas, которая принимает в качестве аргумента указатель на массив.
- В функции mas происходит инициализация переменных sum и element.
- Происходит обход каждого столбца массива.
- Вычисляется среднее арифметическое элементов столбца.
- Происходит проверка каждого элемента столбца на условие больше значения element.
- Выводится количество элементов, удовлетворяющих условию.
- Выводится среднее арифметическое элементов столбца.
- Выводится сообщение о количестве элементов, удовлетворяющих условию.
- В функции main происходит инициализация массива a.
- Вызывается функция printmas для вывода начального массива.
- Вызывается функция mas для обработки массива.
- Вводится пауза перед завершением программы.
- Программа возвращает 0, что означает успешное завершение работы.