Zdrojové kódy pro vývojáře.
Skip Navigation Links. Top 10 přispěvatelů
UživatelČlánky
codeshare49
sochor1
stoupa1
tomas.oplt11
Článek: Algoritmus - datová struktura matice
Špatný
Super
Autor:
Vytvořeno:
Popularita:

Matice je implementována pomocí datové struktury, která má 3 členy
// p - pointer na matici
// n - počet řádek
// m - počet sloupců
// V prvním kroku jsou vytvořeny řádky 
// V druhém kroku jsou pro každou řádku vytvořeny sloupce
// Možné 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:          
 Matrix ()
 {
 }
 
 // constructor 
 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;
   }
  }
 }  // constructor 
 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()
 {
  for (int x = 0; x < pData->n; x++)
   delete pData->p[x];
  delete pData->p;
  delete pData;
 }  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;
};                  void DestructorTest()
{
 Matrix matrix3(2,3);
} int main (int argc, char * argv[])
{
 int n,m;
 n = 2; // rows
 m = 3; // columns  // Create matrix from input numbers ( rows and columns )
 Matrix matrix(n,m);
 printf("%i", matrix.Value(1,1);
 double * arr = new double(n);
 for (int i=0; i< n; i++)
 {
  arr[i] = i;
 }  // Create matrix from array
 Matrix matrix2(n,m, arr);  
 // Are allocated data released ?
 DestructorTest();
   return 0;
}  

 

  Na stránku 
screen  Nový příspěvek
Název  Uživatel  Datum 
Poslední návštěva: 16:37:02, 19. dubna 2024 První  Předchozí  0 Záznamů  Další  Poslední  

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

   

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