Zdrojové kódy pro vývojáře.
Přeskočit odkazy pro navigaci Top 10 přispěvatelů
UživatelČlánky
codeshare45
sochor1
stoupa1
tomas.oplt15
Článek: Algoritmus - datová struktura Matice a operace násobení,plus,mínus,přiřazení
Špatný Super
Autor:
Vytvořeno:
Popularita:

Datová struktura Matrix je implementována přes strukturu která má tři členy
p - ukazatel na strukturu matrix 
n - počet řádek
m - počet sloupců
V prvním kroku vytvoříme řádky
V dalším kroku pro každou řádku vytvořime zadaný počet sloupců 
Operace nad maticí: Multiply, Plus, Minus, Set

#include "stdafx.h" 
#include
#include
#include
#include
#include
#include
#include



class Matrix
{
struct Data {
int **p; // pointer to matrix
int n,m; // rows and columns
} *pData;

public:

// contructor
Matrix(int n, int m)
{
pData = new Data;
pData->p = new int *[n];
pData->n = n;
pData->m = m;

for (int x = 0; x < n; x++)
pData->p[x] = new int[m];

for (int i=0; i< n; i++)
{
for (int j = 0; j < m; j++)
{
pData->p[i][j] = 0;
}
}
}
// contructor
Matrix(int n, int m, double *data)
{
pData = new Data;
pData->p = new int *[n];
pData->n = n;
pData->m = m;

for (int x = 0; x < n; x++)
pData->p[x] = new int[m];

for (int i=0; i< n; i++)
{
for (int j = 0; j < m; j++)
{
pData->p[i][j] = (int)data[i];
}
}
}
~Matrix()
{
}

// operator *
friend Matrix operator *(Matrix & x, Matrix & y)
{
Matrix tmp(x.pData->n,x.pData->m) ;
for (int i=0; i< x.pData->n; i++)
{
for (int j = 0; j < x.pData->m; j++)
{
tmp.pData->p[i][j] = ( x.pData->p[i][j] * y.pData->p[i][j]);
}
}
return tmp;
}

// operator +
friend Matrix operator +(Matrix & x, Matrix & y)
{
Matrix tmp(x.pData->n,x.pData->m) ;
for (int i=0; i< x.pData->n; i++)
{
for (int j = 0; j < x.pData->m; j++)
{
tmp.pData->p[i][j] = ( x.pData->p[i][j] + y.pData->p[i][j]);
}
}
return tmp;
}
// operator -
friend Matrix operator -(Matrix & x, Matrix & y)
{
Matrix tmp(x.pData->n,x.pData->m) ;
for (int i=0; i< x.pData->n; i++)
{
for (int j = 0; j < x.pData->m; j++)
{
tmp.pData->p[i][j] = ( x.pData->p[i][j] - y.pData->p[i][j]);
}
}
return tmp;
}
int& operator() (int i, int j)
{
return pData->p[i][j];
}



void multiply(Matrix &m)
{
for (int i=0; i< pData->n; i++)
{
for (int j = 0; j < pData->m; j++)
{
pData->p[i][j] *= m.pData->p[i][j];
}
}
}
void Plus(Matrix &m)
{
for (int i=0; i< pData->n; i++)
{
for (int j = 0; j < pData->m; j++)
{
pData->p[i][j] += m.pData->p[i][j];
}
}
}
void Minus(Matrix &m)
{
for (int i=0; i< pData->n; i++)
{
for (int j = 0; j < pData->m; j++)
{
pData->p[i][j] -= m.pData->p[i][j];
}
}
}

void Set(int n, int m, int v)
{
pData->p[n][m] = v;
}

int Value(int n, int m)
{
return pData->p[n][m];
}

private:
double m_x,m_y;
};



int main (int argc, char * argv[])
{
int n,m;
n = 2; // radky
m = 3; // sloupce

Matrix m1(n,m);
Matrix m2(n,m);
Matrix m3(n,m);


m1(0,0) = 2;
m2(0,0) = 3;
m3 = m2 + m1;
printf("Hodnota v m3 = %i\r\n",m3(0,0));
m3 = m2 - m1;
printf("Hodnota v m3 = %i\r\n",m3(0,0));
m3 = m2 * m1;
printf("Hodnota v m3 = %i\r\n",m3(0,0));


return 0;
}

 

  Na stránku 
screen  Nový příspěvek
Název  Uživatel  Datum 
Poslední návštěva: 20:55:51, 22. září 2017 První  Předchozí  0 Záznamů  Další  Poslední  

Autor článku
Jméno
Pracovní pozice
Informace
Foto

   

Počet návštěvníků:81
 
  Kontakt