ВУЗ:
Составители:
Рубрика:
63
Размер матриц – не более 10.
const nmax = 10;
void product (int a[ ][nmax], int b[ ][nmax], int c[ ][nmax],
int m, int n, int k){
/* m – число строк в матрице a;
n – число строк в матрице b (должно быть равно числу
столбцов в матрице a);
k – число столбцов в матрице b.
*/
for (int i=0; i<m; i++)
for (int j=0; j<k; j++){
c[i][j]=0;
for (int l=0; l<n; l++) c[i][j] + = a[i][l]*b[l][j];
}
}
Если заданы, например, квадратные матрицы A и B размером
55
, то получить их произведение C можно так:
product (A, B, C, 5, 5, 5);
В приведённом примере есть недостаток – здесь заранее фиксиру-
ется максимальная размерность матриц. Обойти это можно различными
способами, один из которых – использование вспомогательных масси-
вов указателей на массивы.
Напишем функцию, транспонирующую квадратную матрицу про-
извольной размерности n.
void trans ( int n, double *p[ ] )
{double x;
for (int i=0; i<n-1; i++)
for (int j=i+1; j<n; j++)
{x=p[i][j]; p[i][j]=p[j][i]; p[j][i]=x;}}
void main(){
double A[4][4]={ 10, 12, 14, 17
15, 13, 11, 0
-3, 5.1, 6, 6
2, 8, 3, 1};
double ptr[ ]={(double*)&A[0], (double*)&A[1],
(double*)&A[2], (double*)&A[3]};
int n=4;
trans (n, ptr);
Страницы
- « первая
- ‹ предыдущая
- …
- 59
- 60
- 61
- 62
- 63
- …
- следующая ›
- последняя »
