background image

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"; 
   }; 
}; 

background image

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