Sunteți pe pagina 1din 4

Universitatea Tehnic a Moldovei

FCIM
Catedra Calculatoare

RAPORT
la lucrarea de laborator nr. 3
la programarea in limbajul C++

Tema: Supraincarcarea operatorilor.


Varianta 13

A efectuat:

st. gr. C-151 Enachi Nicolae

A verificat:

Lector superior Constantin Plotnic

Chiinu 2016
Scopul lucrrii: familiarizarea studenilor cu noiunile operatori suprancrcai.
Sarcina:
S se creeze clasa 3-D de coordonate n spaiu. S se defineasc operatorii "+", "-", "=", ca metode ale
clasei, iar operatorii de comparare ca funcii prietene. De prevzut posibilitatea realizrii de operaii att
ntre coordonate ct i ntre coordonate i numere obinuite. Clasa trebuie s fie absolut funcional, adic s
conin toi constructorii necesari i destructorul.

Codul Programului:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
class TreiD{
float x, y, z, nr;
public:
TreiD(float x, float y, float z) {
this->x = x;
this->y = y;
this->z = z;
}
TreiD() {};
~TreiD() {};
void Init();
void Show(char*);
TreiD operator+(TreiD v) {
TreiD tmp;
tmp.x = this->x + v.x;
tmp.y = this->y + v.y;
tmp.z = this->z + v.z;
return tmp;
}
TreiD operator-(TreiD v) {
TreiD tmp;
tmp.x = this->x - v.x;
tmp.y = this->y - v.y;
tmp.z = this->z - v.z;
return tmp;
}
TreiD& operator=(TreiD v) {
if (this != &v) {
this->x = v.x;
this->y = v.y;
this->z = v.z;
}
return *this;
}
friend int operator==(TreiD&, TreiD&);
friend int operator!=(TreiD&, TreiD&);
1

};
void TreiD::Init() {
cout << "\n Introduceti coordonatele dorite :\n X=";
cin >> x;
cout << " Y=";
cin >> y;
cout << " Z=";
cin >> z;
}
void TreiD::Show(char* sir) {
cout << "\n Vectorul " << sir << ": (" << x << "," << y << "," << z << ")";
}
int operator==(TreiD &v1, TreiD &v2) {
return v1.x == v2.x && v1.y == v2.y && v1.z == v2.z;
}
int operator!=(TreiD &v1, TreiD &v2) {
return v1.x != v2.x || v1.y != v2.y || v1.z != v2.z;
}
int main()
{
TreiD a;
a.Init();
a.Show("a");
TreiD b(2, 5, 8);
b.Show("b");
if (a == b) cout << "\n Vectorii 'a' si 'b'sunt egali";
if (a != b) cout << "\n Vectorii 'a' si 'b'sunt diferiti";
TreiD r;
r = a + b;
r.Show("a+b");
r = a - b;
r.Show("a-b");
b = a;
b.Show("b=a");
a.~TreiD();
b.~TreiD();
_getch();
return 0;
}

Rezultatele Testrii:

Concluzia:
n urma efecturii lucrrii de laborator nr.3 Supraincarcarea operatorilor. , am
nsuit principiile suprancrcrii operatorilor n limbajul C++, aceast tehnic fiind foarte
important deoarece permite simplificarea efecturii operaiilor tradiionale asupra
obiectelor.
La fel am perfectionat tehnica de programare in limbajul C++ i anume lucrul asupra
claselor, constructorilor i destructorilor.