Проверить симметрию квадратной матрицы

CCBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном задании мы научимся проверять, является ли квадратная матрица симметричной, используя язык программирования C. Квадратная матрица называется симметричной, если она равна своей транспонированной матрице. Мы найдем транспонированную матрицу и сравним ее с исходной матрицей, чтобы проверить ее симметрию.

Примечание: вам нужно самостоятельно создать файл ~/project/main.c, чтобы практиковаться в написании кода и узнать, как компилировать и запускать его с использованием gcc.

cd ~/project
## создать main.c
touch main.c
## скомпилировать main.c
gcc main.c -o main
## запустить main
./main

Объявить переменные и ввести матрицу

Сначала нам нужно объявить переменные и ввести матрицу от пользователя. Мы будем использовать вложенные циклы для ввода матрицы. Чтобы ввести матрицу от пользователя, мы сначала спрашиваем у пользователя размерность матрицы и сохраняем ее в 'n'. Затем мы вводим каждый элемент матрицы с использованием цикла.

#include <stdio.h>

int main() {

    int c, d, a[10][10], b[10][10], n;
    printf("\nВведите размерность матрицы: \n\n");
    scanf("%d", &n);

    printf("\nВведите %d элементов матрицы: \n\n", n * n);
    for (c = 0; c < n; c++)
        for (d = 0; d < n; d++)
            scanf("%d", &a[c][d]);

    return 0;
}

Найти транспонированную матрицу

Транспонированная матрица получается путем обмена индексов строк и столбцов. Мы используем вложенные циклы, чтобы найти транспонированную матрицу. Для нахождения транспонированной матрицы мы используем два цикла. Первый цикл итерируется по строкам, а второй цикл итерируется по столбцам.

// finding transpose of a matrix and storing it in b[][]
for (c = 0; c < n; c++)
    for (d = 0; d < n; d++)
        b[d][c] = a[c][d];

Проверить симметрию матрицы

В этом шаге мы проверим, совпадает ли исходная матрица с ее транспонированной матрицей или нет. Для этого мы используем вложенные циклы. Чтобы проверить симметрию матрицы, мы используем два цикла. Первый цикл итерируется по строкам, а второй цикл итерируется по столбцам.

// checking if the original matrix is the same as its transpose
for (c = 0; c < n; c++)
    for (d = 0; d < n; d++)
        if (a[c][d]!= b[c][d]) {
            printf("\n\nМатрица не является симметричной\n\n");
            exit(0); // системный метод для завершения программы
        }

Вывести результаты

После проверки того, что матрица симметрична, программа выводит сообщение, подтверждающее это. Программа будет завершаться, если матрица не является симметричной.

// If the program is not terminated yet, it means the matrix is symmetric
printf("\n\nМатрица является симметричной\n\n");
printf("\n\n\t\t\tПрограммирование весело!\n\n\n");

Резюме

В этом практическом занятии мы научились проверять, является ли квадратная матрица симметричной, используя язык программирования C. Мы использовали вложенные циклы для ввода и нахождения транспонированной матрицы, а затем проверили, совпадает ли исходная матрица с ее транспонированной. Если две матрицы были одинаковыми, программа выводила сообщение, которое говорило, что матрица симметрична.