Sunteți pe pagina 1din 11

Universitatea Tehnica a Moldovei

RAPORT La lucrarea de laborator nr.3


Tema : Supraincarcarea operatorilor

Elaborat de studenta Butucea Mariana


gr. FI-141 :

Verificat de profesorul : Rusu Mariana

Chişinău-2016
Problema 1
Să se creeze clasa Date – data, care conţine cîmpurile: ziua, luna, anul. Să se definească operatorii "+" şi
"-" ca metode ale clasei, iar operatorii "++" şi "--" în ambele variante(prefixă şi postfixă) ca funcţii
prietene. Operatorul "+" trebuie să permită realizarea operaţiilor numai cu variabilele de tip predefinit int
(x=y+5).
Problema 2 :
Să se creeze clasa List – coadă. Să se definească operatorii "+" – de adunare a listelor, "=" – de atribuire ca
metode ale clasei. Să se definească operatorii de comparare "==", "!=", "<", ">" ca funcţii prietene. Să se
supraîncarce operatorii "<<" şi ">>" pentru ieşiri/intrări de obiecte, precum şi pentru inserarea/eliminarea
elementelor în/din coadă. Clasa trebuie să fie absolut funcţională, adică să conţină toţi constructorii
necesari şi destructorul. Pentru simplificarea lucrului să se utilizeze clasa sau structura ListItem pentru
reprezentarea elementelor listei spre care referă List.
1. Codul sursa :
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

using namespace std ;


class Date
{
int day;
int month;
int year;

public:
Date() //constr.implicit
{
day=0;
month=0;
year=0;
};
Date(Date &d) //constr.copie
{
this->day=d.day;
this->month=d.month;
this->year=d.year;
};
Date(int d,int m,int y) //constr. general
{
day=d;
month=m;
year=y;
};
~Date(){}; //destructor
Date operator+(Date &s) // supraincarcarea operatorului + ca metoda a clasei
{
Date res;
res.day=this->day+s.day; // suma zilelor obiectului curent +
obiectul ca parametru
res.month=this->month+s.month;
res.year=this->year+s.year;
return res;
};
Date operator-(Date &d)
{
Date dif;
dif.day=this->day-d.day;
dif.month=this->month-d.month;
dif.year=this->year-d.year;
return dif;
};
friend Date& operator++(Date& pr); // metode prietene - ca sa aiba acces
la datele private ale obiectului
friend Date operator++(Date& post,int);
friend Date& operator--(Date& dec);
friend Date operator--(Date& post,int);

void print()
{
cout<<endl<<"Le jour "<<day;
cout<<endl<<"Le mois "<<month;
cout<<endl<<"L'annee "<<year<<endl;
}
};
Date& operator++(Date& pr)
{
Date pre; // preincrementarea
pr.day++;
pr.month++;
pr.year++;
pre.day=pr.day;
pre.month=pr.month;
pre.year=pr.year;
return pre;
}
Date operator++(Date& post,int)
{
Date st; // posincrementarea
st.day=post.day;
st.month=post.month;
st.year=post.year;
post.day++;
post.month++;
post.year++;
return st;
}
Date& operator--(Date& dec)
{
Date decr;
dec.day--;
dec.month--;
dec.year--;
decr.day=dec.day;
decr.month=dec.month;
decr.year=dec.year;
return decr;
}
Date operator--(Date& post,int)
{
Date st;
st.day=post.day;
st.month=post.month;
st.year=post.year;
post.day--;
post.month--;
post.year--;
return st;

int main()
{
Date data1(10,11,2010),data2(data1),data3(5,1,3),data4();// am construit obiecte de tip date ;
int d=2,d2=1;
cout<<endl<<"Voila l'objet data2(l'objet de travail):";
data2.print();
getch();
cout<<endl<<"Voila l'objet data3:";
data3.print();
getch();
cout<<endl<<"La somme de deux objets de type Date:";
data2=data1+data3;
data2.print();
getch();
cout<<endl<<"La differece de deux objets de type Date:";
data2=data1-data3;
data2.print();
getch();
cout<<endl<<"L'operateur '++' prefix:";
++data2;
data2.print();
getch();
cout<<endl<<"L'operateur '++'postfix:(avant et apres l'incrementation)";
data2++.print();
data2.print();
getch();
cout<<endl<<"L'operateur '--' prefix:";
--data2;
data2.print();
getch();
cout<<endl<<"L'operateur '--'postfix(avant et apres la decrementation)";
data2--.print();
data2.print();
getch();
return 0;
}

Rezultatele compilarii :
Afisarea datelor initiale si in urma prelucrarilor:
2. Codul sursa :
#include <iostream>
#include <sstream>

using namespace std;

class Node {
public:
int data;
Node *link;
};
using namespace std;

class Set {
private:
Node *p;

public:
Set();

Set &operator+(Set &); // supraincarcarea operatorilor ca metode membre

Set &operator*(Set &);

Set &operator-(Set &);

friend void operator+=(Set &, int); // ca metode prietene inserarea unui element nou

friend bool operator==(Set &, Set&);//comparare la egalitate

friend ostream &operator<<(ostream &, Set&); // supraincarcarea fluxului de iesire

friend istream &operator>>(istream &, Set&); // de intrare

bool has(int);

Node *first();// returneaza primul element

int size(); // nr de el in multimi


};
Set::Set() {
p = NULL;
}

bool Set::has(int element) {// implementarea metodei has : verifica daca multimea curenta
contine elementul transmis ca arg
Node *q;
bool has = false;

for (q = p; q != NULL; q = q->link) {


if (q->data == element) {
has = true;
break;
}
}

return has;
}

Node *Set::first() { return p; }

int Set::size() {
Node *q;
int size = 0;
for (q = p; q != NULL; q = q->link)
size++;

return size;
}

Set &Set::operator+(Set &set) {


Set result;
Node *q;

for (q = p; q != NULL; q = q->link) {


result += q->data;
}

for (q = set.first(); q != NULL; q = q->link) {


result += q->data;
}

return result;

Set &Set::operator*(Set &set) {


Set result;
Node *q;

for (q = p; q != NULL; q = q->link)


if (set.has(q->data))
result += q->data;

return result;
}

Set &Set::operator-(Set &set) {


Set result;
Node *q;

for (q = p; q != NULL; q = q->link)


if (!set.has(q->data))
result += q->data;
return result;
}

void operator+=(Set &set, int value) {


Node *q, *t;

if (!set.has(value)) {

if (set.p == NULL) {
set.p = new Node;
set.p->data = value;
set.p->link = NULL;
}
else {
q = set.p;

while (q->link != NULL)


q = q->link;

t = new Node;
t->data = value;
t->link = NULL;
q->link = t;
}
}

bool operator==(Set &set1, Set &set2) {


Set diff1, diff2;

diff1 = set1 - set2;


diff2 = set2 - set1;

return diff1.size() == 0 && diff2.size() == 0;

ostream &operator<<(ostream &out, Set &set) {//apartenenta el la multime


Node *q;

for (q = set.first(); q != NULL; q = q->link) {


out << q->data << " ";
}

return out;
}

istream &operator>>(istream &in, Set &set) {// declarate ca friend


int data;
string s;

while (getline( cin, s ) && !s.empty())


{
stringstream ss( s );
ss >> data;
if (!ss)
cout << "Invalid number. Try again" << endl;
else
set += data;
}

return in;
}

int main() {
Set set1, set2, result;

cout << "Give first set: " << endl;


cin >> set1;
cout << "Give second set: " << endl;
cin >> set2;

cout << "First set : " << set1 << endl;


cout << "Second set : " << set2 << endl;

bool b = set1 == set2;


cout << "Equality of sets(0 for false, 1 for true) = " << b << endl;

result = set1 - set2;


cout << "Difference between first and second set : " << result << endl;

result = set1 * set2;


cout << "Intersection between first and second set : " << result << endl;

result = set1 + set2;


cout << "Reunion between first and second set : " << result << endl;

set1 += 10;
cout << "Add element 10 to first set" << endl;
cout << "First set : " << set1 << endl;

cout << "First set's size = " << set1.size();

return 0;
}
Rezultatele compilarii:

Adunarea listelor, diferenta,intersectia

Concluzie:
In aceasta lucrare de laborator am creat o clasa cu anumite cimpuri indicate in sarcina. Am definit
operatorii "+" şi "-" ca metode ale clasei, iar operatorii "++" şi "--" în ambele variante(prefixă şi postfixă)
ca funcţii prietene
In partea a 2 a lucrarii am creat clasa List – coadă. Am definit operatorii "+" – de adunare a listelor, "=" –
de atribuire ca metode ale clasei. Am definit operatorii de comparare "==", "!=", "<", ">" ca funcţii
prietene. Am supraîncarcat operatorii "<<" şi ">>" pentru ieşiri/intrări de obiecte, precum şi pentru
inserarea/eliminarea elementelor în/din coadă. Clasa este funcţională, conţine toţi constructorii necesari şi
destructorul.

S-ar putea să vă placă și

  • Laborator 3
    Laborator 3
    Document17 pagini
    Laborator 3
    DorelDjj
    Încă nu există evaluări
  • Lab 4 Cazacu POO
    Lab 4 Cazacu POO
    Document8 pagini
    Lab 4 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • C++2012 Lab6
    C++2012 Lab6
    Document10 pagini
    C++2012 Lab6
    Elena Bujor
    Încă nu există evaluări
  • Lab 6 Cazacu POO
    Lab 6 Cazacu POO
    Document5 pagini
    Lab 6 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • Laborator 1 C
    Laborator 1 C
    Document17 pagini
    Laborator 1 C
    Dorin Graur
    Încă nu există evaluări
  • Lab 4
    Lab 4
    Document5 pagini
    Lab 4
    cristian
    Încă nu există evaluări
  • Evaluarea 1 TSSS, Varianta 2
    Evaluarea 1 TSSS, Varianta 2
    Document2 pagini
    Evaluarea 1 TSSS, Varianta 2
    Alex Tronciu
    Încă nu există evaluări
  • Lab1 Po
    Lab1 Po
    Document7 pagini
    Lab1 Po
    Alina Axenti
    Încă nu există evaluări
  • Lucrarea de Laborator NR 4 POO
    Lucrarea de Laborator NR 4 POO
    Document10 pagini
    Lucrarea de Laborator NR 4 POO
    Alexandru Burdeniuc
    Încă nu există evaluări
  • Lab 7 Cazacu POO
    Lab 7 Cazacu POO
    Document8 pagini
    Lab 7 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • Laborator nr.3 POO
    Laborator nr.3 POO
    Document6 pagini
    Laborator nr.3 POO
    MARYAN Pătru
    Încă nu există evaluări
  • Lab 6 Poo
    Lab 6 Poo
    Document5 pagini
    Lab 6 Poo
    Alex Tronciu
    Încă nu există evaluări
  • Lab.4 FC
    Lab.4 FC
    Document6 pagini
    Lab.4 FC
    Cristina Florea
    Încă nu există evaluări
  • Lucrare de Laborator nr.2.
    Lucrare de Laborator nr.2.
    Document8 pagini
    Lucrare de Laborator nr.2.
    ionperu
    100% (2)
  • Lab 6
    Lab 6
    Document4 pagini
    Lab 6
    Егор Казаков
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document10 pagini
    Lab 1
    Ion Cornea
    Încă nu există evaluări
  • POO1-varianta 3
    POO1-varianta 3
    Document5 pagini
    POO1-varianta 3
    Octavian Lucaș
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document10 pagini
    Lab 1
    rosca9doinita
    Încă nu există evaluări
  • Laboratorul 7 PC
    Laboratorul 7 PC
    Document36 pagini
    Laboratorul 7 PC
    Petrea Trofim
    Încă nu există evaluări
  • Lab7 POO
    Lab7 POO
    Document10 pagini
    Lab7 POO
    Grosu Elena
    Încă nu există evaluări
  • Lab 1 C++
    Lab 1 C++
    Document13 pagini
    Lab 1 C++
    Maxim Tincu
    Încă nu există evaluări
  • ASAD Lab03 Raport
    ASAD Lab03 Raport
    Document6 pagini
    ASAD Lab03 Raport
    Mihai U
    Încă nu există evaluări
  • LAb 2 SDA
    LAb 2 SDA
    Document19 pagini
    LAb 2 SDA
    Dima Cucu
    Încă nu există evaluări
  • Lab MMC2
    Lab MMC2
    Document5 pagini
    Lab MMC2
    Maxim
    Încă nu există evaluări
  • Lab 2 POO AI-191
    Lab 2 POO AI-191
    Document8 pagini
    Lab 2 POO AI-191
    Carolin
    Încă nu există evaluări
  • Rezolvarea Numerica A Sistemelor de Ecuatii Liniare
    Rezolvarea Numerica A Sistemelor de Ecuatii Liniare
    Document8 pagini
    Rezolvarea Numerica A Sistemelor de Ecuatii Liniare
    Valentin I. Marius
    Încă nu există evaluări
  • Laborar 4 Programare
    Laborar 4 Programare
    Document13 pagini
    Laborar 4 Programare
    cristian
    Încă nu există evaluări
  • Lab 4 Rom
    Lab 4 Rom
    Document6 pagini
    Lab 4 Rom
    o m
    Încă nu există evaluări
  • Raport 2 Si Raport 3 La SDA
    Raport 2 Si Raport 3 La SDA
    Document17 pagini
    Raport 2 Si Raport 3 La SDA
    maxlab
    Încă nu există evaluări
  • Laborator nr1 SDA
    Laborator nr1 SDA
    Document25 pagini
    Laborator nr1 SDA
    Iulian Decuseara
    Încă nu există evaluări
  • Laborator Porgramarea Calculatoarelor 3
    Laborator Porgramarea Calculatoarelor 3
    Document3 pagini
    Laborator Porgramarea Calculatoarelor 3
    Sergiu Lungu
    Încă nu există evaluări
  • POO Lab7
    POO Lab7
    Document6 pagini
    POO Lab7
    Dani Ela
    Încă nu există evaluări
  • Lab 2 MMC Boj
    Lab 2 MMC Boj
    Document12 pagini
    Lab 2 MMC Boj
    Andrian Brinzan
    Încă nu există evaluări
  • MMC Lab2
    MMC Lab2
    Document6 pagini
    MMC Lab2
    Mihail Boran
    Încă nu există evaluări
  • POO#Lab#5
    POO#Lab#5
    Document3 pagini
    POO#Lab#5
    Damian Musteata
    Încă nu există evaluări
  • Laborator 1
    Laborator 1
    Document4 pagini
    Laborator 1
    Maria Tugulschi
    Încă nu există evaluări
  • Lab 2 Apa
    Lab 2 Apa
    Document12 pagini
    Lab 2 Apa
    Artur Kingsman
    Încă nu există evaluări
  • Laborator 1 Cucu Eugeniu
    Laborator 1 Cucu Eugeniu
    Document5 pagini
    Laborator 1 Cucu Eugeniu
    Cucu Eugen
    Încă nu există evaluări
  • Lab1 Apa
    Lab1 Apa
    Document15 pagini
    Lab1 Apa
    SlavicCaldare
    Încă nu există evaluări
  • Lab 4-5 SDA V10
    Lab 4-5 SDA V10
    Document13 pagini
    Lab 4-5 SDA V10
    Dima Cucu
    Încă nu există evaluări
  • Laborator nr.1
    Laborator nr.1
    Document9 pagini
    Laborator nr.1
    Anonymous CZYe2H
    Încă nu există evaluări
  • Asdn2 Lab5
    Asdn2 Lab5
    Document4 pagini
    Asdn2 Lab5
    Жан Ганган
    Încă nu există evaluări
  • NR 4
    NR 4
    Document7 pagini
    NR 4
    Graid Icen
    Încă nu există evaluări
  • Laborator-I MMC
    Laborator-I MMC
    Document7 pagini
    Laborator-I MMC
    Ion Bn
    Încă nu există evaluări
  • Lab1 2mmc
    Lab1 2mmc
    Document10 pagini
    Lab1 2mmc
    Artur Kingsman
    Încă nu există evaluări
  • PC Raport 6 7.odt
    PC Raport 6 7.odt
    Document16 pagini
    PC Raport 6 7.odt
    Trifan Petru
    Încă nu există evaluări
  • Laborator 5 POO
    Laborator 5 POO
    Document6 pagini
    Laborator 5 POO
    Constantin Palita
    Încă nu există evaluări
  • Lucrarea de Laborator NR 7 POO
    Lucrarea de Laborator NR 7 POO
    Document14 pagini
    Lucrarea de Laborator NR 7 POO
    Vlad Racu
    Încă nu există evaluări
  • Raport 4 Si 5 SDA
    Raport 4 Si 5 SDA
    Document14 pagini
    Raport 4 Si 5 SDA
    Вадим Платон
    Încă nu există evaluări
  • Lucrare de Curs LFPC
    Lucrare de Curs LFPC
    Document19 pagini
    Lucrare de Curs LFPC
    Cristik95
    100% (1)
  • Laborator 2 APA
    Laborator 2 APA
    Document17 pagini
    Laborator 2 APA
    RoscaFlorin
    Încă nu există evaluări
  • Programarea Avansata
    Programarea Avansata
    Document8 pagini
    Programarea Avansata
    iry_piry
    Încă nu există evaluări
  • Lucrarea de Laborator NR 7 POO
    Lucrarea de Laborator NR 7 POO
    Document7 pagini
    Lucrarea de Laborator NR 7 POO
    Alexandru Burdeniuc
    Încă nu există evaluări
  • Laboratorul Nr.1
    Laboratorul Nr.1
    Document9 pagini
    Laboratorul Nr.1
    Георгий 98
    Încă nu există evaluări
  • Lab 3 MMC
    Lab 3 MMC
    Document4 pagini
    Lab 3 MMC
    Adrian Bodorin
    Încă nu există evaluări
  • Grafica Laborator Nr.3
    Grafica Laborator Nr.3
    Document5 pagini
    Grafica Laborator Nr.3
    Cebotari Ion
    100% (2)
  • TAP Lab2
    TAP Lab2
    Document4 pagini
    TAP Lab2
    Adrian Bodorin
    Încă nu există evaluări
  • Laborator Nr.3 C++
    Laborator Nr.3 C++
    Document17 pagini
    Laborator Nr.3 C++
    Cristik95
    100% (1)
  • LAB 3 OOP LunguConstantin
    LAB 3 OOP LunguConstantin
    Document8 pagini
    LAB 3 OOP LunguConstantin
    lungu constantin
    Încă nu există evaluări
  • Tutunaru Poo Lab 3
    Tutunaru Poo Lab 3
    Document9 pagini
    Tutunaru Poo Lab 3
    Dascal Sergiu
    Încă nu există evaluări
  • Damean Alexandra IOT6
    Damean Alexandra IOT6
    Document11 pagini
    Damean Alexandra IOT6
    Damean Alexandra
    Încă nu există evaluări
  • ARC3 Damean Alexandra FI
    ARC3 Damean Alexandra FI
    Document10 pagini
    ARC3 Damean Alexandra FI
    Damean Alexandra
    Încă nu există evaluări
  • Damean Alexandra IoT 2
    Damean Alexandra IoT 2
    Document14 pagini
    Damean Alexandra IoT 2
    Damean Alexandra
    Încă nu există evaluări
  • Damean Alexandra IoT 2
    Damean Alexandra IoT 2
    Document14 pagini
    Damean Alexandra IoT 2
    Damean Alexandra
    Încă nu există evaluări
  • Damean Alexandra IOT5
    Damean Alexandra IOT5
    Document9 pagini
    Damean Alexandra IOT5
    Damean Alexandra
    Încă nu există evaluări
  • Tema 7. Segmentarea Clienţilor
    Tema 7. Segmentarea Clienţilor
    Document3 pagini
    Tema 7. Segmentarea Clienţilor
    Damean Alexandra
    Încă nu există evaluări
  • Chestionar Evaluarea II La SAV
    Chestionar Evaluarea II La SAV
    Document21 pagini
    Chestionar Evaluarea II La SAV
    Damean Alexandra
    Încă nu există evaluări
  • Damean Alexandra IOT4
    Damean Alexandra IOT4
    Document9 pagini
    Damean Alexandra IOT4
    Damean Alexandra
    Încă nu există evaluări
  • Damean Alexandra IOT3
    Damean Alexandra IOT3
    Document8 pagini
    Damean Alexandra IOT3
    Damean Alexandra
    Încă nu există evaluări
  • Tema 10.promovarea Marfurilor Si Serviciilor
    Tema 10.promovarea Marfurilor Si Serviciilor
    Document5 pagini
    Tema 10.promovarea Marfurilor Si Serviciilor
    Damean Alexandra
    Încă nu există evaluări
  • SOMIPP7
    SOMIPP7
    Document3 pagini
    SOMIPP7
    Damean Alexandra
    Încă nu există evaluări
  • Raspunsuri Teste Examen
    Raspunsuri Teste Examen
    Document14 pagini
    Raspunsuri Teste Examen
    Damean Alexandra
    Încă nu există evaluări
  • Tema 5. Cercetări de Marketing
    Tema 5. Cercetări de Marketing
    Document4 pagini
    Tema 5. Cercetări de Marketing
    Damean Alexandra
    Încă nu există evaluări
  • Tema 2. Conceptul de Marketing
    Tema 2. Conceptul de Marketing
    Document3 pagini
    Tema 2. Conceptul de Marketing
    Damean Alexandra
    Încă nu există evaluări
  • Tema 3. Procesul de Gestionare A Marketingului
    Tema 3. Procesul de Gestionare A Marketingului
    Document3 pagini
    Tema 3. Procesul de Gestionare A Marketingului
    Damean Alexandra
    Încă nu există evaluări
  • Tema 8. Noţiune de Marfă. Strategia de Elaborarea A Mărfurilor
    Tema 8. Noţiune de Marfă. Strategia de Elaborarea A Mărfurilor
    Document4 pagini
    Tema 8. Noţiune de Marfă. Strategia de Elaborarea A Mărfurilor
    Damean Alexandra
    Încă nu există evaluări
  • SOMIPP
     SOMIPP
    Document6 pagini
    SOMIPP
    Damean Alexandra
    Încă nu există evaluări
  • Probleme 2
    Probleme 2
    Document3 pagini
    Probleme 2
    Damean Alexandra
    Încă nu există evaluări
  • Somipp 2
    Somipp 2
    Document8 pagini
    Somipp 2
    Damean Alexandra
    Încă nu există evaluări
  • Somipp SOMIPP5
    Somipp SOMIPP5
    Document6 pagini
    Somipp SOMIPP5
    Damean Alexandra
    Încă nu există evaluări
  • SOMIPP
     SOMIPP
    Document6 pagini
    SOMIPP
    Damean Alexandra
    Încă nu există evaluări