Читайте также:
|
|
Рассмотрим фрагмент программы.
int main()
{
int N,M;
float **a;
a=new float *[N];
}
С помощью оператора new создан массив из n элементов. Массив указателей на float, каждый элемент которого, является адресом, в котором хранится указатель.
Для определения значения этого указателя организуем цикл от 0 до N-1, в котором каждый указатель будет адресовать участок памяти, в котором хранится m элементов типа float.
for(i=0;i<N;i++)
a[i]=new float(M);
Определен массив N указателей, каждый из которых адресует массив из M вещественных чисел (типа float). Фактически создана динамическая матрица размера N на M. Обращение к элементу динамической матрицы идет так же, как и к элементу статической матрицы: a[i][j].
ЗАДАЧА 6. Написать программу умножения двух матриц вещественных чисел A(N,M) и B(M,K).
Пусть нужно умножить матрицы:
.
По правилу «строка на столбец», получим:
В общем виде формула имеет вид:
, где i = 0, N-1 и j = 0, L-1.
Проводить операцию умножения можно, если количество строк левой матрицы совпадает с количеством столбцов правой. Кроме того, A ´ B ¹ B ´ A.
#include <iostream>
int main()
{
int i,j,k,N,L,M;
double **a, **b, **c;
cout<<"N="; cin>>N;
cout<<"M="; cin>>M;
cout<<"L="; cin>>L;
a=new double *[N];
for(i=0;i<N;i++)
a[i]=new double[M];
b=new double *[M];
for(i=0;i<M;i++)
b[i]=new double[L];
c=new double *[N];
for(i=0;i<N;i++)
c[i]=new double[L];
cout<<"Input Matrix A"<<endl;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
cin>>a[i][j];
cout<<"Input Matrix B"<<endl;
for(i=0;i<M;i++)
for(j=0;j<L;j++)
cin>>b[i][j];
//Умножение матриц A и B.
for(i=0;i<N;i++)
for(j=0;j<L;j++)
for(c[i][j]=0,k=0;k<M;k++)
c[i][j]+=a[i][k]*b[k][j];
cout<<"Matrix C"<<endl;
for(i=0;i<N;cout<<endl,i++)
for(j=0;j<L;j++)
cout<<c[i][j]<<"\t";
for(i=0;i<N;i++)
delete [] a[i];
delete [] a;
for(i=0;i<M;i++)
delete [] b[i];
delete [] b;
for(i=0;i<N;i++)
delete [] c[i];
delete [] c;
}
Дата добавления: 2015-08-27; просмотров: 67 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Динамические матрицы | | | Сведения о муниципальном заказчике |