Documente Academic
Documente Profesional
Documente Cultură
RAPORT
Lucrare de laborator nr.3
la
Programarea orientată pe obiecte
Chișinău 2020
Lucrare de laborator nr.3
#include <iostream>
using namespace std;
class Integers{
public:
int number;
friend Integers& operator- (Integers&);
friend Integers& operator-- (Integers&);
Integers(){};
//Constructor cu parametri
Integers(int num){
number = num;
}
Integers operator +(int n){
this->number = this->number + n;
return *this;
}
Integers operator --(int){
this->number = this->number - 1;
return *this;
}
int operator +(Integers const &right){
return number + right.number;
}
int operator -(Integers const &right){
return number - right.number;
}
};
int main(){
Integers i, i1;
cout << "Introduceti un numar: ";
cin >> i.number;
i++;
cout << "i++ = " << i.number << "\n";
i--;
cout << "i-- = " << i.number << "\n";
i+9;
cout << "i + 9 = " << i.number << "\n";
i-5;
cout << "i - 5 = " << i.number << "\n\n";
i1.number = 5;
cout << "i1 = " << i1.number << "\n";
i1 = i;
cout << "i1 = i => " << i1.number << "\n";
i1 = i + 10;
cout << "i1 = i + 10 => " << i1.number << "\n";
i1 = i - 10;
cout << "i1 = i - 10 => " << i1.number << "\n";
return 0;
}
1. Rezultatul programului (a)
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
class Set{
public:
int *arr = new int[0];
int length;
friend Set operator-(Set&);
friend Set operator+(Set&, Set&);
friend Set operator*(Set&, Set&);
cout << "Introduceti array-ul dvs: ";
for(int i = 0; i < length; i++) {
int e;
cin >> e;
arr[i] = e;
}
}
// length++;
arr[length] = n;
length++;
return *this;
}
//comparare la egalitate
Set operator == (Set &right){
int bad = 0;
if(length != right.length) cout << "Array-urile nu sunt egale!";
else{
for(int i = 0; i < length; i++){
if(arr[i] != right.arr[i]) bad = 1;
}
if(bad == 1) cout << "Array-urile nu sunt egale!";
else cout << "Array-urile sunt egale!";
}
return *this;
}
void Afisare(){
cout << "Array-ul dvs: [";
for(int i = 0; i < length; i++) cout << " " << arr[i] << " ";
cout << "]\n";
}
bool ElementInArray(int el){
int i, count = 0;
for(i = 0; i < length; i++) if(arr[i] == el) count++;
if(count == 0) return false;
else return true;
}
ostream& operator <<(ostream&out){
cout << "Array-ul dvs: [";
for(int i = 0; i < length; i++) cout << " " << arr[i] << " ";
cout << "]\n";
return out;
}
istream& operator >>(istream&in){
cout << "Introduceti numarul de elemente: ";
cin >> length;
cout << "Introduceti array-ul dvs: ";
for(int i = 0; i < length; i++) {
int e;
cin >> e;
arr[i] = e;
}
return in;
}
};
cout << "Care element doriti sa stergeti: ";
cin >> del;
for(i = 0; i < a.length; i++){
if(a.arr[i] == del){
for(int j = i; j < a.length - 1; j++) a.arr[j] = a.arr[j + 1];
count++;
break;
}
}
if(count == 0){
cout << "Elementul introdus nu exista in array-ul dvs";
}
else{
cout << "Elementul dvs a fost cu success sters din array!\n";
cout << "Array-ul dvs: [";
for(i = 0; i < a.length - 1; i++) cout << " " << a.arr[i] << " ";
cout << "]";
a.length--;
}
}
for(int i = 0; i < a.length; i++) arrO[i] = 0;
for(int i = 0; i < length1; i++){
for(int j = 0; j < length1; j++){
if(a.arr[i] == right.arr[j]) arrO[i] = right.arr[j];
}
}
//Stergem 0
for(int i = 0; i < length1; i++){
if(arrO[i] == 0){
for(int j = i; j < length1; j++) arrO[j] = a.arr[j + 1];
count++;
break;
}
}
if(count > 0) length1--;
cout << "Elementele care sunt egale: [";
for(int i = 0; i < length1; i++) cout << " " << arrO[i] << " ";
cout << "]";
}
int main(){
Set a, a1;
while (true) {
system("CLS");
cout << "Selectati item-ul dorit:" << endl;
cout << " 1.Afisarea multimilor de elemente" << endl;
cout << " 2.Adaugarea unui element in array-ul existent" << endl;
cout << " 3.Eliminarea unui element din array" << endl;
cout << " 4.Verificare daca elementul introdus exista in array" << endl;
cout << " 5.Verificare daca doua array-uri sunt egale" << endl;
cout << " 6.Adaugarea unui array la alt array" << endl;
cout << " 7.Verificarea care elemente din doua array-uri corespund (sunt egal
e)" << endl;
cout << " Esc - Iesire" << endl;
cout << "\n>> ";
char key = getch();
switch (key) {
case '1': {
a.Afisare();
a1.Afisare();
getch();
break;
}
case '2': {
cout << "Introduceti elementul dorit: ";
int n;
cin >> n;
a+=n;
a.Afisare();
getch();
break;
}
case '3': {
-a;
getch();
break;
}
case '4': {
int n;
cout << "Introduceti elementul dorit: ";
cin >> n;
if(a.ElementInArray(n)) cout << "Elementul introdus exista in array-
ul dvs!";
else cout << "Elementul introdus nu exista in array-ul dvs!";
getch();
break;
}
case '5': {
a==a1;
getch();
break;
}
case '6': {
a+a1;
a.Afisare();
getch();
break;
}
case '7': {
a*a1;
getch();
break;
}
case 27: {
exit(1);
}
}
}
return 0;
}
Meniul programului:
Concluzii:
1. Verificarea ne arata ca rezultatele obtinute sunt corecte si programul lucreaza corect.
2. Au fost obtinute cunoștințe în studierea principiilor de supraîncărcare a operatorilor în C+
+, de definire şi utilizare a constructorilor și distructurilor, a constructorilor impliciți, de
copiere, citire, de conversie a tipului și constructor general.