Проверьте, является ли матрицы симметричной относительно главной диагонали - C (СИ)

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

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

Проверьте, является ли двумерный массив симметричным относительно главной диагонали. Главная диагональ — та, которая идёт из левого верхнего угла двумерного массива в правый нижний. Программа получает на вход число n 100, являющееся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по n чисел, являющихся элементами массива. Программа должна выводить слово yes для симметричного массива и слово no для несимметричного.

Решение задачи: «Проверьте, является ли матрицы симметричной относительно главной диагонали»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
 
using namespace std;
 
int main(){
    int **matrix, n, counter=0, et=0, i, j;
 
    printf("Enter size of matrix: ");
    scanf("%i", &n);
    fflush(stdin);
 
    printf("\n");
    matrix=(int**)malloc(sizeof(int*)*n);
    for(i=0; i<n; i++){
        matrix[i]=(int*)malloc(sizeof(int)*n);
        for(j=0; j<n; j++){
            printf("Enter element [%i][%i]: ", i, j);
            scanf("%i", &matrix[i][j]);
        }
        et+=n-(i+1);
    }
 
    printf("Matrix:\n");
    for(i=0; i<n; i++){
        for(j=0; j<n; j++){
            printf("%3i", matrix[i][j]);
        }
 
        printf("\n");
 
        for(j=i+1; j<n; j++){
            if(matrix[i][j]==matrix[j][i]){
                counter++;
            }
        }
    }
 
    counter==et ? printf("\nYes.") : printf("\nNo.");
 
    for(i=0; i<n; i++){
        free(matrix[i]);
    }
 
    free(matrix);
 
    return 0;
}

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

Этот код на языке C занимается несколькими вещами:

  1. Пользователю предлагается ввести размер матрицы.
  2. Пользователь вводит элементы матрицы, и они сохраняются в динамически выделенной памяти.
  3. Код проверяет, является ли матрица симметричной относительно главной диагонали. Для этого он проходит по всем элементам матрицы и сравнивает их с соответствующими элементами на противоположной стороне главной диагонали. Если все элементы совпадают, то матрица считается симметричной.
  4. В конце кода освобождается выделенная память. Список переменных и их значений:
  5. n - размер матрицы
  6. matrix - динамически выделенный массив указателей на матрицу
  7. counter - количество элементов, совпадающих с элементами на противоположной стороне главной диагонали
  8. et - количество элементов в матрице минус количество элементов, совпадающих с элементами на противоположной стороне главной диагонали
  9. i, j - индексы элементов матрицы
  10. matrix[i][j] - элемент матрицы
  11. scanf, printf - функции ввода и вывода данных
  12. free - функция освобождения памяти

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


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

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

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