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