Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Динамические матрицы

Читайте также:
  1. VIII. Долина создания душ: понимание матрицы
  2. VIII. Долина создания душ: понимание матрицы
  3. XVI. Просветленность — это судьба: двойная жизнь волшебников матрицы
  4. XVI. Просветленность — это судьба: двойная жизнь волшебников матрицы
  5. XVIII. Стать богом: жизнь за пределами матрицы
  6. XVIII. Стать богом: жизнь за пределами матрицы
  7. Алгоритм вычисления обратной матрицы. (Метод присоединенной матрицы).

При работе с динамическими матрицами используют указатели. Указатель описывают и выделяют память для хранения 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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Ввод-вывод матрицы| Двойные указатели для работы с динамическими матрицами

mybiblioteka.su - 2015-2024 год. (0.005 сек.)