Добавил:
sergey123
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
//---------------------------------------------------------------------------
#pragma hdrstop
#include <stdlib.h>
#include "matrix.h"
#include "Unit1.h"
#include <iostream>
using namespace std;
//---------------------------------------------------------------------------
#pragma package(smart_init)
CMatrix::CMatrix()
{
x=Form1->TrackBar1->Position;
y=Form1->TrackBar2->Position;
randomize();
M = new int[x*y];
for (int j=0; j < y; j++) {
for (int i=0; i < x; i++) {
M[j*x+i]=random(10);
}
}
}
CMatrix::CMatrix(int a,int b)
{
x=a;
y=b;
randomize();
M = new int[x*y];
for (int j=0; j < y; j++) {
for (int i=0; i < x; i++) {
M[j*x+i]=random(10);
}
}
}
CMatrix::~CMatrix()
{
}
CMatrix CMatrix::operator+(CMatrix &A)
{
CMatrix MatNew(A.x,A.y);
for (int j = 0; j < y; j++) {
for (int i = 0; i < x; i++) {
MatNew.M[x*j+i]=M[x*j+i]+A.M[x*j+i];
}
}
return MatNew;
}
CMatrix CMatrix::operator =(CMatrix *A)
{
for (int j = 0; j < y; j++) {
for (int i = 0; i < x; i++) {
M[x*j+i]=A->M[x*j+i];
}
}
return *this;
}
CMatrix CMatrix::operator-(CMatrix &A)
{
CMatrix MatNew(A.x,A.y);
for (int j = 0; j < y; j++) {
for (int i = 0; i < x; i++) {
MatNew.M[x*j+i]=M[x*j+i]-A.M[x*j+i];
}
}
return MatNew;
}
CMatrix CMatrix::operator*(CMatrix &A)
{
CMatrix MatNew(y,A.x);
for (int j = 0; j < A.x; j++) {
for (int i = 0; i < y; i++){
MatNew.M[MatNew.x*j+i]=0;
for (int k = 0; k < x; k++) {
MatNew.M[MatNew.x*j+i]+=M[x*i+k]*A.M[A.x*k+j];
}
}
}
return MatNew;
}