Создать фиксированную матрицу 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);
Объяснение кода листинга программы
В данном коде выполняется следующие действия:
- Создается двумерный массив obr размером 3х3, который будет содержать значения определителя.
- Внутри цикла for, который выполняется от 1 до 9, создается переменная i, которая принимает значения от 0 до 2.
- Внутри цикла for, который выполняется от 1 до 9, создается переменная j, которая принимает значения от 0 до 2.
- Переменная obr[i][j] присваивается значение 1/opred * ad(int i, int j).
- Значение определителя сохраняется в переменной opred.
- Выводится значение определителя на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д