Alocare dinamica matrice in POO

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
oncica1990
Junior
Junior
Posts: 7
Joined: 21 Apr 2013, 17:37
Judet: Hunedoara

Alocare dinamica matrice in POO

Post by oncica1990 » 21 Apr 2013, 18:58

Salut! Obs. ca s-a mai discutat ceva apropiat referitor la prob. mea. Am o tema( spre rusinea mea sunt incepator in programare, desi sunt la faculta de profil), am inceput POO in C++, chestia e ca trebuie sa creez o clasa numita matrice, unde trebuie sa aloc memorie dinamic pt. a creaa o matrice, aici am prob. Profu a explicat vag sa folosim pointeri,iar apoi sa instantiem matrici cu care sa ne jucam, adunare, inmultire chestii de genu, aici nu as avea prob as scrie metode sa faca asta. PROB mare e la alocarea dinamica a matricei, am gasit segvente de cod pentru asta, dar imi este greu sa inteleg pt ca sunt explicate greoi, sunt cam lent la minte( sa nu zic prost) am nevoie de exmple concrete sa inteleg mai tot.




Multam' fain !



oncica1990
Junior
Junior
Posts: 7
Joined: 21 Apr 2013, 17:37
Judet: Hunedoara

Re: Alocare dinamica matrice in POO

Post by oncica1990 » 21 Apr 2013, 19:06

class matrice
{
private:
int rand, coloana;
public:
matrice(int n,int m)
{
int *rand=new int*[n];
int *coloana=new int*[m];
}


};

Asa ar trebui sa incep? (imi da eroare la complilare)

Viorel
Microsoft MVP
Microsoft MVP
Posts: 293
Joined: 13 Jul 2007, 12:26

Re: Alocare dinamica matrice in POO

Post by Viorel » 21 Apr 2013, 22:16

Încearcă acest început:

Code: Select all

class matrice
{
public:
	matrice(int rinduri, int coloane)
	{
		mRinduri = rinduri;
		mColoane = coloane;
		mValori = new int[mRinduri * mColoane]();
	}

	~matrice()
	{
		delete mValori;
	}

	int * operator [] (int rind)
	{
		return mValori + mColoane * rind;
	}

private:
	int mRinduri, mColoane;
	int * mValori;

	matrice(...);
};
Exemplu:

Code: Select all

matrice m(3, 4);
m[1][2] = 100;

George92
Junior
Junior
Posts: 16
Joined: 13 Apr 2013, 00:37
Judet: Dolj

Re: Alocare dinamica matrice in POO

Post by George92 » 21 Apr 2013, 23:31

private:
int row, col;
Type **mat;

// Allocate space for rows
mat = (Type**)(new Type*[row]);

// For each row, allocate space for coloumns
for (int i=0; i<row; ++i)
*(mat + i) = (Type *)(new Type[col]);

Type poate fi orice vrei tu , asta e dintr-un fragment cu templaturi de matrici .

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Alocare dinamica matrice in POO

Post by Marius Bancila » 22 Apr 2013, 11:08

Un sir de N elemente intregi se aloca dinamic asa:

Code: Select all

int* sir = new int[N];
Pentru o matrice de NxM elemente ai doua optiuni: fie un sir de NxM elemente, fie un sir de N pointeri la siruri de M elemente de intregi. Prima versiune ti-a aratat-o Viorel:

Code: Select all

int* matrice = new int[N * M];
Cum accesezi elementul la linia R (0<=R<N) si coloana C (0<=C<M)?

Code: Select all

int elem = matrice[R * M + C]; // rand * numar_coloane + coloana
A doua varianta ti-a aratat-o George. E putin mai complicata, necesita si mai multa memorie (un sir de N pointeri in plus), si alocarea/dealocarea necesita mai multe operatii.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

oncica1990
Junior
Junior
Posts: 7
Joined: 21 Apr 2013, 17:37
Judet: Hunedoara

Re: Alocare dinamica matrice in POO

Post by oncica1990 » 22 Apr 2013, 22:54

Multumesc mult!! Raman dator cu un suc;;)

Post Reply