Как сделать всю обработку массива через функцию? - 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;
}

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

  1. Включаются необходимые заголовочные файлы.
  2. Определяется размер массива N.
  3. Создается функция printmas, которая принимает в качестве аргумента указатель на массив.
  4. В функции printmas происходит инициализация массива случайными числами от 1 до 9.
  5. Выводится начальный массив.
  6. Создается функция mas, которая принимает в качестве аргумента указатель на массив.
  7. В функции mas происходит инициализация переменных sum и element.
  8. Происходит обход каждого столбца массива.
  9. Вычисляется среднее арифметическое элементов столбца.
  10. Происходит проверка каждого элемента столбца на условие больше значения element.
  11. Выводится количество элементов, удовлетворяющих условию.
  12. Выводится среднее арифметическое элементов столбца.
  13. Выводится сообщение о количестве элементов, удовлетворяющих условию.
  14. В функции main происходит инициализация массива a.
  15. Вызывается функция printmas для вывода начального массива.
  16. Вызывается функция mas для обработки массива.
  17. Вводится пауза перед завершением программы.
  18. Программа возвращает 0, что означает успешное завершение работы.

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


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

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

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