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

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

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


textual

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

#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;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

8   голосов, оценка 4.125 из 5

Источник
Похожие ответы