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