Определить, является ли матрица симметричной относительно главной диагонали - 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);
    }
}

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

  1. В функции symmetric происходит проверка матрицы на симметричность относительно главной диагонали.
  2. В функции average вычисляется среднее арифметическое положительных элементов каждого столбца матрицы.
  3. В функции max_row_num выводится номер столбца с максимальным элементом каждой строки матрицы.

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


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

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

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