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.