//Умножение на масиви (като матрици), чийто размер може да се променя
//Ще умножаваме масивите matrA и matrB.Резултаът ще е matrRez.
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
//брой редове в matrA
int xA=2;
//брой колони в matrA
int yA=4;
//указател към указател
//представяме масивът като едномерен масив от указатели към
//едномерни динамични масиви
int **matrA;
//резервираме памет, ако не става излизаме
if(!(matrA=new int *[xA])) exit(0);
//На всеки елемент на горният масив се присвоява едномерен динамичен масив
for(int i=0;i<xA;i++)
if(!(matrA[i]=new int[yA]))exit(0);
//Вторият множител.Аналогично като за A
int xB=4;
int yB=3;
//За да бъде възможно умножението трябва броят на
//колоните на A да е равен на броя на редовете на B
if(yA!=xB)
cout<<"Error!";
int **matrB;
if(!(matrB=new int *[xB]))exit(0);
for(int i=0;i<xB;i++)
if(!(matrB[i]=new int[yB]))exit(0);
//Резултатът е масив с рамерност брой на редове=бр.ред. на A и
//бр.кол.=бр.кол. на B
int xR=xA;
int yR=yB;
int **matrRez;
if(!(matrRez=new int *[xR]))exit(0);
for(int i=0;i<xR;i++)
if(!(matrRez[i]=new int[yR]))exit(0);
//Инициализираме масивът с резултата
for(int i=0;i<xR;i++)
for(int j=0;j<yR;j++)
matrRez[i][j]=0;
//Въвеждане на масива A
int imp;
for(int i=0;i<xA;i++)
for(int j=0;j<yA;j++)
{
cin>>imp;
matrA[i][j]=imp;
}
//Въвеждане на масива B
for(int i=0;i<xB;i++)
for(int j=0;j<yB;j++)
{
cin>>imp;
matrB[i][j]=imp;
}
Тъкмо си мислех тези дни дали няма да е добре в STL-а на стандартния C++ да се добави контейнер от вида - "matrix <int> m1 (i)(j)" който да има свойства на матрица :)