Вычислить для заданной квадратной матрицы A её симметричную часть - C (СИ)

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

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

Здравствуйте Уважаемые! Не могли бы Вы помочь мне в решении вот такой задачи на языке СИ:

Написать функцию, которая вычисляет для заданной квадратной матрицы 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();
}
С уважением, Alina_1986

Решение задачи: «Вычислить для заданной квадратной матрицы 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");
    }
}

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

Вот список действий, которые выполняются в коде:

  1. Задание размера матрицы. Название переменной: n. Значение: 3.
  2. Инициализация матрицы a1 случайными значениями. Название переменной: a1. Тип: int[n][n].
  3. Вывод матрицы a1 на экран. Название функции: printf.
  4. Инициализация матрицы a2 элементами матрицы a1, переставленными по диагонали. Название переменной: a2. Тип: int[n][n].
  5. Вывод матрицы a2 на экран. Название функции: printf.
  6. Вычисление симметричной части матрицы a1 и вывод её на экран. Название функции: Simmetrichnaya. Вложенный цикл for (итерация по строкам матрицы). Вложенный цикл for (итерация по столбцам матрицы). Вычисление суммы элементов a1[i][j] и a1[j][i]. Деление суммы на 2. Сохранение результата в переменной s[i][j]. Вывод значения переменной s[i][j] на экран с помощью функции printf.
  7. Вывод матрицы s на экран. Название функции: printf.
  8. Вычисление кососимметричной части матрицы a1 и вывод её на экран. Название переменной: k. Тип: int[n][n]. Вложенный цикл for (итерация по строкам матрицы). Вложенный цикл for (итерация по столбцам матрицы). Вычисление разности элементов a1[i][j] и a1[j][i]. Деление разности на 2. Сохранение результата в переменной k[i][j]. Вывод значения переменной k[i][j] на экран с помощью функции printf.
  9. Завершение работы программы. Название функции: getch.

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


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

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

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