 
Laboratorium nr 6
Temat: Dynamiczna alokacja pami ci
1. Dynamiczna alokacja pami ci – funkcja new and delete
Najbardziej popularnym sposobem zarz dzania pami ci w C++ jest u ycie funkcji new oraz delete.
Zalety u ycia funkcji new:
• w czasie tworzeniu obiektów istnieje mo liwo przesłania parametrów w do konstruktora,
• nie jest potrzebna ju funkcja sizeof(), wystarczy jedynie typ danych,
• zwraca bezpo redni wska nik, w zwi zku z czym nie ma potrzeby rzutowania/zamiany typów,
• ponadto, oba operatory mo na przeci a odpowiednio dla danej klasy.
# include <conio.h> 
# include <iostream> 
# include <stdio.h> 
# include <stdlib.h> 
# include <alloc.h> 
 
using namespace std; 
 
class macierz { 
private: 
   int x,y; 
   int *tab; 
   char nazwa[8]; 
public: 
   macierz(char * nzw, int n, int m); 
   ~macierz(); 
   int wprowadz(int i, int j, int w); 
   int wyswietl(); 
}; 
 
macierz::macierz(char * nzw, int n, int m){ 
   x=n; 
   y=m; 
   strcpy(nazwa,nzw); 
   tab=new int[n*m]; 
   for (int i=0; i<n; i++) 
   for (int j=0; j<m; j++) 
   *(tab+y*i+j)=0; 
} 
 
macierz::~macierz(){ 
   delete[] tab; 
}; 
 
int macierz::wprowadz (int i, int j, int w) { 
   *(tab+y*i+j)=w; 
   return 0; 
}; 
 
int macierz::wyswietl(){ 
   cout << "\nMacierz=" << nazwa << endl; 
   for (int i=0; i<x; i++) { 
      for (int j=0; j<y; j++) cout << *(tab+y*i+j) << "\t"; 
      cout <<"\n"; 
   }; 
}; 
 
int main() { 
class macierz *A,*B; 
   A=new macierz("AAA",3,3); 
   A->wprowadz(1,1,1); 
   A->wyswietl(); 
   B= new macierz("BBB",4,4); 
   B->wprowadz(1,1,1); 
   B->wyswietl(); 
   getch(); 
   delete A; 
   delete B; 
return 0; 
} 
2. Zadanie:
Opracuj program, który b dzie definiował obiekt typu „macierz” o zadanych wymiarach np. 3x3, z
mo liwo ci wstawiania, zerowania poszczególnych elementów macierzy jak równie dodawania i
mno enia dwóch macierzy, w oparciu o funkcje składowe klasy „macierz”, np.:
class macierz { 
public: 
   int x,y; 
   int tab[3,3]; 
   wprowadz(int i, int j); 
   kasuj (int i, int j); 
   dodaj(...); 
   pomnoz(...); 
   wyswietl (...); 
   itp.()...; 
}
Uwaga: Program powinien składa si z oddzielnych plików, tzn. pliku głównego, pliku klasy, itp.
Program powinien posiada krótkie menu wyboru, np.:
1.
Utwórz macierz
2.
Wprowad element macierzy
3.
Kasuj element macierzy
4.
Wy wietl macierz
5.
itp.
6.
Koniec