Вычислить среднее арифметическое значение элементов, лежащих на диагоналях матрицы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Помогите с программой на двумерный массив. Вычислить среднее арифметическое значение элементов, лежащих на диагоналях матрицы С (6х6). Заменить этим значением все диагональные элементы матрицы.
Простите, не то задание скинул. Вот то что мне надо. Дана матрица А(10х10). Отсортировать элементы, лежащие на главной диагонали, в порядке возрастания.

Решение задачи: «Вычислить среднее арифметическое значение элементов, лежащих на диагоналях матрицы»

textual
Листинг программы
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
double** create_matrix(size_t size)
{
    size_t i = 0;
    double** matrix = (double**)malloc(sizeof(double*) * size);
    for (i = 0; i < size; i++)
        matrix[i] = (double*)malloc(sizeof(double) * size);
    return matrix;
}
 
void free_matrix(double** matrix, size_t size)
{
    size_t i = 0;
    for (i = 0; i < size; i++)
        free(matrix[i]);
    free(matrix);
}
 
void fill(double** matrix, size_t size)
{
    size_t i = 0, j = 0;
    for (i = 0; i < size; i++)
        for (j = 0; j < size; j++)
            matrix[i][j] = rand() % 20;
}
 
void print_row(const double* row, size_t size)
{
    while (size--)
        printf("%8.2lf ", *row++);
    putchar('\n');
}
 
void print_matrix(const double** matrix, size_t size)
{
    size_t i = size;
    while (i--)
        print_row(*matrix++, size);
}
 
double diag_sum(const double** matrix, size_t size)
{
    double sum = 0;
    size_t i;
    for (i = 0; i < size; i++)
        sum += matrix[i][i];
    return sum;
}
 
void replace_diag(double** matrix, double value, size_t size)
{
    size_t i = 0;
    for (i = 0; i < size; i++)
        matrix[i][i] = value;
}
 
int main()
{
    const size_t size = 6;
    double avg = 0;
    double** matrix = create_matrix(size);
    srand(time(0));
    fill(matrix, size);
    print_matrix(matrix, size);
    avg = diag_sum(matrix, size) / size;
    replace_diag(matrix, avg, size);
    putchar('\n');
    print_matrix(matrix, size);
    free_matrix(matrix, size);
#ifdef _MSC_VER
    system("pause");
#endif
    return EXIT_SUCCESS;
}

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

  1. Создание двумерного массива с помощью функции create_matrix.
  2. Заполнение матрицы случайными числами с помощью функции fill.
  3. Вывод содержимого матрицы на экран с помощью функции print_matrix.
  4. Вычисление суммы элементов главной диагонали с помощью функции diag_sum.
  5. Замена значения элементов главной диагонали на среднее арифметическое с помощью функции replace_diag.
  6. Вывод содержимого матрицы на экран после замены значений элементов главной диагонали с помощью функции print_matrix.
  7. Освобождение памяти, выделенной под матрицу, с помощью функции free_matrix.
  8. Ввод пользователем команды pause для приостановки работы программы в консоли Windows.
  9. Возвращение значения EXIT_SUCCESS для успешного завершения программы.

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


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

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

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