Вычислить для заданной квадратной матрицы A её симметричную часть - C (СИ)
Формулировка задачи:
Здравствуйте Уважаемые!
Не могли бы Вы помочь мне в решении вот такой задачи на языке СИ:
С уважением,
Alina_1986
Написать функцию, которая вычисляет для заданной квадратной матрицы A её симметричную часть S(ij)=(A(ij)+A(ji))/2 и кососимметричную часть K(ij)=(A(ij)-A(ji))/2????
Вот моя программа: (работает только Данная матрица и транспонированная, а симметричная часть(главная диагональ как у данной матрицы) и кососимметричная(главная диагональ нули, а по обе стороны от нее значения равные по модулю но противоположные по знаку) не работает
#include<stdio.h> #include<conio.h> #include<stdlib.h> #define n 3 int main() {int a1[n][n],a2[n][n],s[n][n],k[n][n]; int i,j; clrscr(); randomize(); printf("Dannaja matrica:\n\n"); for(i=0;i<n;i++) {for(j=0;j<n;j++) {a1[i][j]=random(50); printf(" %d",a1[i][j]); } printf("\n\n"); } printf("Transponirovannaja matrica:\n\n"); for(j=0;j<n;j++) for(i=0;i<n;i++) a2[j][i]=a1[i][j]; for(j=0;j<n;j++) {for(i=0;i<n;i++) { printf(" %d",a2[j][i]); } printf("\n\n"); } printf("Simmetrichnaya chast:\n\n"); for(i=0;i<n;i++) {for(j=0;j<n;j++) { s[i][j]=(a1[i][j]+a2[j][i])/2; printf(" %d",s[i][j]); } printf("\n\n"); } printf("Kososimmetrichnaya chast:\n\n"); for(i=0;i<n;i++) {for(j=0;j<n;j++) { k[i][j]=(a1[i][j]-a2[j][i])/2; printf(" %d",k[i][j]); } printf("\n\n"); } getch(); }
Решение задачи: «Вычислить для заданной квадратной матрицы A её симметричную часть»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include<time.h> #define n 3 void Simmetrichnaya (int a1[n][n]); int main(void) { int a1[n][n],a2[n][n],k[n][n]; int i,j; printf("Dannaja matrica:\n\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) { a1[i][j]= rand()%50; printf(" %d",a1[i][j]); } printf("\n\n"); } printf("Transponirovannaja matrica:\n\n"); for(j=0;j<n;j++) { for(i=0;i<n;i++) { a2[j][i] = a1[i][j]; } } for(j=0;j<n;j++) { for(i=0;i<n;i++) { printf(" %d",a2[j][i]); } printf("\n\n"); } printf("Simmetrichnaya chast:\n\n"); Simmetrichnaya(a1); printf("Kososimmetrichnaya chast:\n\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) { k[i][j]=(a1[i][j]-a1[j][i])/2; printf(" %d",k[i][j]); } printf("\n\n"); } getch(); return 0; } void Simmetrichnaya (int a1[n][n]) { int s[n][n]; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { s[i][j] = (a1[i][j]+a1[j][i])/2; printf(" %d",s[i][j]); } printf("\n\n"); } }
Объяснение кода листинга программы
Вот список действий, которые выполняются в коде:
- Задание размера матрицы. Название переменной:
n
. Значение: 3. - Инициализация матрицы a1 случайными значениями. Название переменной:
a1
. Тип: int[n][n]. - Вывод матрицы a1 на экран. Название функции:
printf
. - Инициализация матрицы a2 элементами матрицы a1, переставленными по диагонали. Название переменной:
a2
. Тип: int[n][n]. - Вывод матрицы a2 на экран. Название функции:
printf
. - Вычисление симметричной части матрицы a1 и вывод её на экран. Название функции:
Simmetrichnaya
. Вложенный цикл for (итерация по строкам матрицы). Вложенный цикл for (итерация по столбцам матрицы). Вычисление суммы элементов a1[i][j] и a1[j][i]. Деление суммы на 2. Сохранение результата в переменной s[i][j]. Вывод значения переменной s[i][j] на экран с помощью функции printf. - Вывод матрицы s на экран. Название функции:
printf
. - Вычисление кососимметричной части матрицы a1 и вывод её на экран. Название переменной:
k
. Тип: int[n][n]. Вложенный цикл for (итерация по строкам матрицы). Вложенный цикл for (итерация по столбцам матрицы). Вычисление разности элементов a1[i][j] и a1[j][i]. Деление разности на 2. Сохранение результата в переменной k[i][j]. Вывод значения переменной k[i][j] на экран с помощью функции printf. - Завершение работы программы. Название функции:
getch
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д