Вычисление матричного выражения с использованием подпрограмм - C (СИ)
Формулировка задачи:
Нужно написать программу вычисления матричного выражения с использованием подпрограмм..
Суть такова.. Есть две матрицы, их вводим в программу, они должны посчитаться и данные соответственно, должны подставиться в формулу для вычисления(C=2*(A+0.5B)+4B^2).
"Изюминка" задания в том,что т.к вводиться сразу две матриц, то вычесление определителя нужно ввести в ПОДПРОГРАММУ.
Помогите написать данный код
Не могу додумать как его нормально сделать..
Есть повторяющиеся действия, которые целесообразно организовать в виде подпрограмм:
1. Ввода матрицы и ее размерности(входные параметры - имя матрицы, результат – матрица и размерности, в самом общем случае-две) – функция read_m;
Решение задачи: «Вычисление матричного выражения с использованием подпрограмм»
textual
Листинг программы
//determinant razlozheniem po 1-oj stroke float det(float **p, int n) { int i,h,x,y; if(n==1) return **p; float d=0; for(i=0; i<n; ++i) { float **add = new float*[n-1]; for(h=0; h<n-1; ++h) add[h] = new float[n-1]; for(y=1; y<n; y++) for(x=0; x<n; x++) { if(x==i) continue; if(x<i) add[x][y-1] = p[x][y]; else add[x-1][y-1] = p[x][y]; } if(i%2) p[i][0] = -p[i][0]; d += p[i][0]*det(add, n-1); for(h=0; h<n-1; ++h) delete[] add[h]; delete[] add; } return d; }
Объяснение кода листинга программы
- В функции определены три переменные типа int: i, h, x, y. Значения этих переменных будут использоваться в цикле.
- Если размер матрицы равен 1, то функция возвращает значение диагональной ячейки.
- Задается переменная d типа float и инициализируется нулем. Она будет использоваться для хранения значения определителя.
- В цикле перебираются все строки матрицы от 0 до n-1.
- Для каждой строки создается новый массив add типа float*[n-1].
- Внутренний цикл перебирает все столбцы матрицы от 1 до n-1.
- Если значение x равно i, то внутренний цикл пропускает итерацию.
- Если значение x меньше i, то элементы массива add заполняются значениями соответствующих элементов матрицы p.
- Если значение x больше или равно i, то элементы массива add заполняются значениями элементов матрицы p, смещенных на единицу влево и вниз относительно текущего элемента.
- Если значение i является четным числом, то значение p[i][0] умножается на -1.
- Значение d увеличивается на произведение значения p[i][0] и определителя матрицы add, полученного на предыдущем шаге.
- После завершения внутреннего цикла для текущей строки, выделенная память удаляется.
- По завершении внешнего цикла, функция возвращает значение d.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д