Создать фиксированную матрицу 3х3, и найти её определитель - C (СИ)

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

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

Программа должна создавать фиксированную матрицу 3х3, находить её определитель,транспонированную матрицу и обратную. Обязательные элементы:функции,массивы,указатели .....Ошибка: ) expected
#include <stdio.h>
 
float a[3][3],  obr[3][3], opred , b[3][3];
void transp_matr();
void vvod_matr();                           // функция заполнения матрицы
float opredelitel_matr();                       // функция нахождения определителя
void obr_matr();                            // функция нахождения обратной матрицы
void vyvod();                               // функция вывода матрицы
 
main()
{
    vvod_matr();
    transp_matr();
    opred = opredelitel_matr();
    obr_matr();
 
    printf("Вывод матрицы:\n");
    vyvod();
 
    printf("Вывод транспанированой матрицы:\n");
    vyvod();
 
    printf("Вывод определителя:\n%f", opred);
 
    printf("Вывод обратной матрицы:\n");
    vyvod();
    return 0;
 
}
 
void vvod_matr()
  {
    // ввод матрицы
    printf("Заполните матрицу\n");
    for (int i = 0; i < 3; i++)
     {
        printf("%d строка:\n", i);
        for (int j = 0; j < 3; j++)
            scanf("%f", &a[i][j]);
     }
  }
 
void transp_matr()
  {
    // транспонирование
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            b[i][j] = a[j][i];
  }
float ad(int i,j)[SIZE="7"]{[/SIZE]     <---вот это красным выделяет //алгебраическое дополнение элемента a[i][j]
    int l[]={0,1},c[]={0,1};
    for (int n=i;n<2;n++)
        l[n]++;
    for (int n=j;n<2;n++)
        c[n]++;
    float res=a[l[0]][c[0]]*a[l[1]][c[1]]- a[l[0]][c[1]]*a[l[1]][c[0]];
    if((i+j)%2==1)
        res*=-1;
    return res;
        }
 
float opredelitel_matr()
{
float s=0;
    // поиск определителя по первой строке
        for (int j=0;j<3;j++)
        s+=a[0][j] * ad(0,j);
    return s;

}

void obr_matr()
{
    // поиск обратной матрицы
    opred= opredelitel_matr();
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            obr[i][j] = 1/opred * ad();
}
 
void vyvod(float a[3][3])
{
    float *pe=a[0];
    for (int i = 0; i < 3; i++){
        /*for (int j = 0; j < 3; j++)
            printf("%f ", a[i][j]);
                */
        for (int j = 0; j < 3; j++)
            printf("%f ", *pe++);
        printf("\n");
    }

Решение задачи: «Создать фиксированную матрицу 3х3, и найти её определитель»

textual
Листинг программы
obr[i][j] = 1/opred * ad(int i, int j);

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

В данном коде выполняется следующие действия:

  1. Создается двумерный массив obr размером 3х3, который будет содержать значения определителя.
  2. Внутри цикла for, который выполняется от 1 до 9, создается переменная i, которая принимает значения от 0 до 2.
  3. Внутри цикла for, который выполняется от 1 до 9, создается переменная j, которая принимает значения от 0 до 2.
  4. Переменная obr[i][j] присваивается значение 1/opred * ad(int i, int j).
  5. Значение определителя сохраняется в переменной opred.
  6. Выводится значение определителя на экран.

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


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

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

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