Проверьте, является ли матрицы симметричной относительно главной диагонали - 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 занимается несколькими вещами:
- Пользователю предлагается ввести размер матрицы.
- Пользователь вводит элементы матрицы, и они сохраняются в динамически выделенной памяти.
- Код проверяет, является ли матрица симметричной относительно главной диагонали. Для этого он проходит по всем элементам матрицы и сравнивает их с соответствующими элементами на противоположной стороне главной диагонали. Если все элементы совпадают, то матрица считается симметричной.
- В конце кода освобождается выделенная память. Список переменных и их значений:
- n - размер матрицы
- matrix - динамически выделенный массив указателей на матрицу
- counter - количество элементов, совпадающих с элементами на противоположной стороне главной диагонали
- et - количество элементов в матрице минус количество элементов, совпадающих с элементами на противоположной стороне главной диагонали
- i, j - индексы элементов матрицы
- matrix[i][j] - элемент матрицы
- scanf, printf - функции ввода и вывода данных
- free - функция освобождения памяти
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д