Catedra FCIM
Raport
Lucrarea de laborator Nr.2
Programarea orientată pe obiecte
Varianta 7
Chișinău 2021
Sarcina
a) Să se creeze clasa Queue–coadă. Cîmpurile –numărul de elemente şi un
pointer pentru alocarea dinamică a memoriei. Să se definească constructorii:
implicit, de copiere şi cu un parametru –numărul necesar de elemente;
funcţiile addşiget pentru punerea unui element în coadă şi pentru scoaterea
unui element din coadă respectiv; funcţiile: isEmpty,care returnează valoarea
1 dacă coada este vidă şi zero în caz contrar, şi isFull care returnează
valoarea 1 dacă coada este plină şi zero în caz contrar.
Rezolvare
a)
#include <iostream>
#include <string>
using namespace std;
class Queue {
private:
int capacity; // maximum capacity of the queue
int *arr;
int count;
public:
// Constructori implicit
Queue(int size){
arr = new int[size];
capacity = size;
count = 0;
};
// Constructori de copiere - paramentru - numarul necesar de
elemente
Queue(const Queue &obj){
this->capacity = obj.capacity;
this->arr = obj.arr;
this->count = obj.count;
};
~Queue(){
delete[] arr;
}
bool isEmpty(){
return (this->count == 0);
}
bool isFull(){
return (this->count == this->capacity);
}
else {
cout << "Insertarea itemului "<< item << endl;
arr[this->count] = item;
count++;
}
}
void printQueue(){
if (this->isEmpty()){
cout << "Aceasta lista este goala\n";
}
else {
for (int i =0; i<this->count; i++){
cout << "["<<i+1<<"] = "<<this->arr[i]<< endl;
}
}
}
Queue q(4);
q.addQueue(2);
q.addQueue(5);
q.addQueue(3);
q.addQueue(7);
q.printQueue();
cout << q.isEmpty() << endl;
cout << q.isFull() << endl;
return 0;
}
Output:
b) Să se creeze clasa Matrix – matrice. Clasa conţine pointer spre int, numărul de
rînduri şi de coloane şi o variabilă – codul erorii. Să se definească constructorul
fără parametri (constructorul implicit), constructorul cu un parametru – matrice
pătrată şi constructorul cu doi parametri – matrice dreptunghiulară ş. a. Să se
definească funcţiile membru de acces: returnarea şi setarea valorii elementului (i,j).
Să se definească funcţiile de adunare şi scădere a două matrice; înmulţirea unei
matrice cu alta; înmulţirea unei matrice cu un număr. Să se testeze funcţionarea
clasei. În caz de insuficienţă de memorie, necorespondenţă a dimensiunilor
matricelor, depăşire a limitei memoriei utilizate să se stabilească codul erorii.
#include <iostream>
#include <string>
class Matrix
{
private:
int **p;
int rows_, cols_;
void allocSpace();
public:
Matrix(int, int);
Matrix(int);
Matrix(int**, int, int);
Matrix();
~Matrix();
Matrix(const Matrix&);
Matrix& operator=(const Matrix&);
void setMatrix();
void showMatrix();
};
void Matrix::allocSpace()
{
p = new int*[rows_];
for (int i = 0; i < rows_; ++i) {
p[i] = new int[cols_];
}
}
void Matrix::setMatrix(){
void Matrix::showMatrix(){
if (this != 0){
Matrix::~Matrix()
{
for (int i =0; i < rows_; i++ ){
delete[] p[i];
}
delete [] p;
}
rows_ = m.cols_;
cols_ = m.cols_;
allocSpace();
}
int main()
{
Matrix A;
A.setMatrix();
A.showMatrix();
Matrix B = Matrix(A);
cout << "\n";
B.showMatrix();
return 0;
}
Output:
Introduceti numarul de randuri
2
Introduceti numarul de coloane
4
p[1][1] = 2
p[1][2] = 4
p[1][3] = 1
p[1][4] = 4
p[2][1] = 4
p[2][2] = 3
p[2][3] = 2
p[2][4] = 4
2 4 1 4
4 3 2 4
2 4 1 4
4 3 2 4