Sa se implementeze clasa Segment.
#include <conio.h> #include <iostream> using namespace std; class Punct{ private: float x; float y; public: Punct(float x = 0, float y = 0); ~Punct(); void afisare(); }; Punct::Punct(float x, float y) { this -> x = x; this -> y = y; cout << "Apel constructor cu parametri pentru clasa Punct("<<x<<","<<y<<")"<<endl; } Punct::~Punct(){ cout << "Apel destructor clasa Punct. Se distruge obiectul Punct("<<x<<","<<y<<")" <<endl; } void Punct::afisare(){ cout<<"("<<x<<","<<y<<")"; } class Segment{ Punct o; Punct v; public: Segment (float x1, float y1, float x2, float y2); ~Segment(); void afisare(); }; Segment:: Segment(float x1, float y1, float x2, float y2) : o(x1 ,y1), v(x2,y2){ cout << "Apel constructor clasa Segment" << endl; cout << "Creat obiectul "; afisare(); } Segment:: ~Segment(){ cout << "Apel destructor clasa Segment" << endl; } void Segment::afisare(){ cout << "[" ; o.afisare(); cout << " , " ; v.afisare(); cout << "]" << endl; } int main(){ Segment s(0, 0, 3 ,4); s.afisare(); getch(); return 0; }
In urma rularii programului se obtine urmatorul output:
Apel constructor cu parametri pentru clasa Punct(0,0) Apel constructor cu parametri pentru clasa Punct(3,4) Apel constructor clasa Segment Creat obiectul [(0,0) , (3,4)] [(0,0) , (3,4)] Apel destructor clasa Segment Apel destructor clasa Punct. Se distruge obiectul Punct(3,4) Apel destructor clasa Punct. Se distruge obiectul Punct(0,0)
Cerinte:
Rulati programul si explicati rezultatul
Adaugati la clasa Segment o functie pentru calculul lungimii
Sa se implementeze clasa Vector.
#include <conio.h> #include <iostream> using namespace std; /** * Implementeaza notiunea de vector. */ class Vector { private: int n; //dimensiunea vectorului float *t; //pointer catre zona de memorie alocata dinamic unde se retin elementele vectorului public: /** * Constructor pentru clasa Vector. * @param n Dimensiunea vectorului */ Vector(int n); /** * Constructor de copiere. * @param v Obiectul pe baza caruia se creaza noul obiect. */ Vector(const Vector &v); /** * Destructor al clasei Vector. */ ~Vector(); /** * Functie pentru citirea vectorului. */ void citire(); /** * Functie pentru afisarea vectorului. */ void afisare(); /** Intoarce numarul de elemente */ int getNrElemente() const; /** * Seteaza valoarea unui element al vectorului. * @param i Indexul elementului ce se va seta. * @param val Noua valoare a elementului. */ void setElement(int i, float val); /** * Intoarce valoarea unui element al vectorului. * @param i Indexul elementului. * @return Valoarea elementului specificat. */ float getElement(int i) const; }; Vector::Vector(int n){ int i; this->n = n; this->t = new float[n]; for (i = 0; i < n; i++){ this->t[i] = 0; } cout<<"Apel constructor cu parametri"<<endl; } Vector::Vector(const Vector &v){ int i; this->n = v.n; this->t = new float[n]; for (i = 0; i < n; i++){ this->t[i] =v.t[i]; } cout<<"Apel constructor de copiere"<<endl; } Vector::~Vector(){ n = 0; if (t!=0) delete t; cout<<"Apel destructor"<<endl; } void Vector::citire(){ int i; cout<<"Dati elementle vectorului:"<<endl; for (i = 0; i < n; i++){ cin >> t[i]; } } void Vector::afisare() { int i; for (i = 0; i < n; i++){ cout<<t[i]<<" "; } cout<<endl; } int Vector::getNrElemente() const { return n; } void Vector::setElement(int i, float val) { if (i >= 0 && i < n){ t[i] = val; } } float Vector::getElement(int i) const { return t[i]; } float suma1(Vector v){ float s = 0; for (int i = 0; i < v.getNrElemente() ; i++ ) s+=v.getElement(i); return s; } float suma2(Vector &v){ float s = 0; for (int i = 0; i < v.getNrElemente() ; i++ ) s+=v.getElement(i); return s; } Vector suma ( const Vector &v1, const Vector &v2 ){ Vector s(v1.getNrElemente()); for (int i = 0; i < s.getNrElemente() ; i++ ) s.setElement(i, v1.getElement(i) + v2.getElement(i)); return s; } int main(){ int n; Vector v1(2); v1.setElement(0,4); v1.setElement(1,9); v1.afisare(); Vector v2 = v1; v2.afisare(); v2.setElement(0,3); v2.afisare(); v1.afisare(); cout << "Suma elementelor este: " << suma1(v1) << endl; cout << "Suma elementelor este: " << suma2(v1) << endl; Vector v = suma(v1, v2); v.afisare(); getch(); return 0; }
In urma rularii programului se obtine urmatorul output:
Apel constructor cu parametri 4 9 Apel constructor de copiere 4 9 3 9 4 9 Apel constructor de copiere Apel destructor Suma elementelor este: 13 Suma elementelor este: 13 Apel constructor cu parametri Apel constructor de copiere Apel destructor 7 18 Apel destructor Apel destructor Apel destructor
Cerinte:
Rulati programul si explicati rezultatul
Eliminati constructorul de copiere, rulati programul si apoi explicati rezultatul.