Вычислить среднее арифметическое значение элементов, лежащих на диагоналях матрицы - 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;
}
Объяснение кода листинга программы
- Создание двумерного массива с помощью функции
create_matrix. - Заполнение матрицы случайными числами с помощью функции
fill. - Вывод содержимого матрицы на экран с помощью функции
print_matrix. - Вычисление суммы элементов главной диагонали с помощью функции
diag_sum. - Замена значения элементов главной диагонали на среднее арифметическое с помощью функции
replace_diag. - Вывод содержимого матрицы на экран после замены значений элементов главной диагонали с помощью функции
print_matrix. - Освобождение памяти, выделенной под матрицу, с помощью функции
free_matrix. - Ввод пользователем команды
pauseдля приостановки работы программы в консоли Windows. - Возвращение значения
EXIT_SUCCESSдля успешного завершения программы.