Определить, является ли матрица симметричной относительно главной диагонали - C (СИ)
Формулировка задачи:
Ребята, помогите не могу сделать, вот кусок кода набросал.
\\\------
Задание
В матрице размерности 7 на 7 определить является ли матрица симметричной относительно главной диагонали. Определить среднее арифметическое
положительных элементов каждого столбца. Найти номера максимальных элементов каждой строки.
\\-----------
SetConsoleOutputCP(1251);
const int n = 7;
const int m = 7;
int a[n][m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
a[i][j] = rand()%7;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++) cout << a[i][j] << " ";
cout << endl;
}Решение задачи: «Определить, является ли матрица симметричной относительно главной диагонали»
textual
Листинг программы
#include <stdio.h>
#define N 7
int symmetric(int mtx[][N]);
void average(int mtx[][N]);
void max_row_num(int mtx[][N]);
int main()
{
int arr[N][N] = { {15,12, 6,-1, 0,16,54},
{12, 9, 1,34,19,38,21},
{ 6, 1,-4, 3, 6,72,36},
{-1,34, 3, 9,11,81, 9},
{ 0,19, 6,11, 8,102,4},
{16,38,72,81,102,63,7},
{54,21,36, 9, 4, 7, 13}
};
printf("%s\n", symmetric(arr) ? "Matrix is symmetric" : "Matrix is not symmetric");
average(arr);
max_row_num(arr);
return 0;
}
int symmetric(int mtx[][N])
{
int i, j;
for(i = 0; i < N - 1; i++){
for(j = i + 1; j < N; j++)
if(mtx[i][j] != mtx[j][i])
return 0;
}
return 1;
}
void average(int mtx[][N])
{
int i, j, sum = 0, count = 0;
puts("The arithmetic mean among the positive elements of the column:");
for(j = 0; j < N; j++, sum = 0, count = 0){
for(i = 0; i < N; i++){
if(mtx[i][j] >= 0){
sum += mtx[i][j];
count++;
}
}
printf("%g ", (double)sum / count);
}
putchar('\n');
}
void max_row_num(int mtx[][N])
{
int i, j, max;
puts("Maximal elements into rows:");
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
if(!j)
max = j;
else
if(mtx[i][j] > mtx[i][max])
max = j;
}
printf("arr[%d][%d]\n", i, max);
}
}
Объяснение кода листинга программы
- В функции
symmetricпроисходит проверка матрицы на симметричность относительно главной диагонали. - В функции
averageвычисляется среднее арифметическое положительных элементов каждого столбца матрицы. - В функции
max_row_numвыводится номер столбца с максимальным элементом каждой строки матрицы.