Sunteți pe pagina 1din 9

Centru de Excelen n Informatic i Tehnologii Informaionale

Specialitatea Informatica

Lucrare Individual Nr.1


Tema:,,Elaborarea claselor n limbajul C++ utiliznd constructori i destructori,
funcii prietene i suprancrcarea operatorilor.

A efectuat : Gorodetchi Pavel, gr.I-1523


A verificat : Dovgani Irina

Data : 17.02.2016
Nota : ________

Chisinau
2016
1) Subcompetene:

-Descrierea claselor i crearea obiectelor adecvate rezolvrii problemei propuse


-Declararea i apelarea de constructori, destructori i funcii friend adecvate
rezolvrii problemei propuse
-Elaborarea fragmentelor de program bazate pe suprancrcarea
2) Enunul programului:
S se descrie obiectul paralelogram, ale crui cmpuri vor fi lungimile
laturilor paralelogramului i msura n grade a unghiului dintre dou laturi
alturate. Obiectul va conine metode pentru determinarea:
-nlimea paralelogramului;
-perimetrul paralelogramului;
-aria paralelogramului;
-lungimilor diagonalelor paralelogramului;
-tipul paralelogramului(oarecare,romb,dreptunghi,patrat).

3) Listing-ul programului:
#include <iostream>
#include <math.h>
using namespace std;
class paralelogram{ //definirea clasei paralelogram
public: //parametrii publici
float l1;
float l2;
float l3;
float l4;
float u1;
float u2;
float u3;
float u4;
float Per;
float Tip(); //metodele cu care vom lucra
float Inaltime();
float Perimetru();
float Aria();
float Diagonala();
//mai jos urmeaz constructorul paralelogram
paralelogram(float latura1,float latura2,float latura3,float latura4,float
unghi1,float unghi2,float unghi3,float unghi4,float Perim);
~paralelogram();// declararea deconstructorului
private:
friend void Perimetru(); //definirea prietenului Parametru
};
// definirea constructorului explicit paralemogram
//si definirea laturilor si unghiurilor cu care vom lucra
paralelogram::paralelogram(float latura1,float latura2,float latura3,float
latura4,float unghi1,float unghi2,float unghi3,float unghi4,float Perim)
{ l1=latura1;
l2=latura2;
l3=latura3;
l4=latura4;
u1=unghi1;
u2=unghi2;
u3=unghi3;
u4=unghi4;
Per=Perim; }
paralelogram::~paralelogram()//definirea explicit destructorului
{}
float paralelogram::Tip()//metoda Tip , prin definire explicita
{ if
(((l1==l3)&&(l2==l4)&&(l2!=l3))&&((u1==90)&&(u3==90)&&(u2==90)&&(u4==
90))) cout<<"Paralelogramul este dreptunghi!"<<endl;
else if
(((l1==l2)&&(l2==l3)&&(l3==l4)&&(l4==l1))&&((u1==90)&&(u2==90)&&(u3==9
0)&&(u4==90)))
cout<<"Paralelogramul este patrat!"<<endl;
else if
(((l1==l2)&&(l2==l3)&&(l3==l4)&&(l4==l1))&&((((u1>0)&&(u1<90))&&((u2>90)
&&(u2<180))&&((u3>0)&&(u3<90))&&((u4>90)&&(u4<180)))&&((u1==u3)&&(
u2==u4)&&(u2!=u3))))
cout<<"Paralelogramul este romb!"<<endl;
else if
(((l1==l3)&&(l2==l4)&&(l2!=l3))&&((((u1>0)&&(u1<90))&&((u2>90)&&(u2<180
))&&((u3>0)&&(u3<90))&&((u4>90)&&(u4<180)))&&((u1==u3)&&(u2==u4)&&
(u3!=u2))))
cout<<"Paralelogramul este oarecare!"<<endl;
}
float paralelogram::Inaltime(){
if
(((l1==l3)&&(l2==l4)&&(l2!=l3))&&((u1==90)&&(u3==90)&&(u2==90)&&(u4==
90)))
cout<<"Inaltimea paralelogramului:"<<l1<<" cm"<<" sau "<<l2<<"
cm"<<endl;
else if
(((l1==l2)&&(l2==l3)&&(l3==l4)&&(l4==l1))&&((u1==90)&&(u2==90)&&(u3==9
0)&&(u4==90)))
cout<<"Inaltimea paralelogramului:"<<l1<<endl;
else if
(((l1==l2)&&(l2==l3)&&(l3==l4)&&(l4==l1))&&((((u1>0)&&(u1<90))&&((u2>90)
&&(u2<180))&&((u3>0)&&(u3<90))&&((u4>90)&&(u4<180)))&&((u1==u3)&&(
u2==u4)&&(u3!=u2))))
cout<<"Inaltimea paralelogramului:"<<((l1*l1)*sin(u1))/l1<<endl;
else if
(((l1==l3)&&(l2==l4)&&(l2!=l3))&&((((u1>0)&&(u1<90))&&((u2>90)&&(u2<180
))&&((u3>0)&&(u3<90))&&((u4>90)&&(u4<180)))&&((u1==u3)&&(u2==u4)&&
(u3!=u2))))
cout<<"Inaltimea paralelogramului:"<<((l1*l1)*sin(u1))/l1<<endl;
}
void Perimetru(paralelogram c)//incadram prietenul Perimetru
{
c.Per=(2*c.l1)+(2*c.l2);
cout<<"Perimetrul paralelogramului:"<<c.Per<<" cm"<<endl;
}
float paralelogram::Aria()
{
if
(((l1==l3)&&(l2==l4)&&(l2!=l3))&&((u1==90)&&(u3==90)&&(u2==90)&&(u4==
90)))
cout<<"Aria paralelogramului:"<<l1*l2<<endl;
else if
(((l1==l2)&&(l2==l3)&&(l3==l4)&&(l4==l1))&&((u1==90)&&(u2==90)&&(u3==9
0)&&(u4==90)))
cout<<"Aria paralelogramului:"<<l1*l1<<endl;
else if
(((l1==l2)&&(l2==l3)&&(l3==l4)&&(l4==l1))&&((((u1>0)&&(u1<90))&&((u2>90)
&&(u2<180))&&((u3>0)&&(u3<90))&&((u4>90)&&(u4<180)))&&((u1==u3)&&(
u2==u4)&&(u3!=u2))))
cout<<"Aria paralelogramului:"<<((l1*l1)*sin(u1))<<endl;
else if
(((l1==l3)&&(l2==l4)&&(l2!=l3))&&((((u1>0)&&(u1<90))&&((u2>90)&&(u2<180
))&&((u3>0)&&(u3<90))&&((u4>90)&&(u4<180)))&&((u1==u3)&&(u2==u4)&&
(u3!=u2))))
cout<<"Aria paralelogramului:"<<((l1*l1)*sin(u1))<<endl; }
float paralelogram::Diagonala(){
if
(((l1==l3)&&(l2==l4)&&(l2!=l3))&&((u1==90)&&(u3==90)&&(u2==90)&&(u4==
90))) cout<<"Diagonalele paralelogramului:"<<sqrt((l1*l1)+(l2*l2))<<" cm si
"<<sqrt((l1*l1)+(l2*l2))<<" cm;"<<endl;
else if
(((l1==l2)&&(l2==l3)&&(l3==l4)&&(l4==l1))&&((u1==90)&&(u2==90)&&(u3==9
0)&&(u4==90)))
cout<<"Diagonalele paralelogramului:"<<sqrt((l1*l1)+(l2*l2))<<" cm si
"<<sqrt((l1*l1)+(l2*l2))<<" cm;"<<endl;
else if
(((l1==l2)&&(l2==l3)&&(l3==l4)&&(l4==l1))&&((((u1>0)&&(u1<90))&&((u2>90)
&&(u2<180))&&((u3>0)&&(u3<90))&&((u4>90)&&(u4<180)))&&((u1==u3)&&(
u2==u4)&&(u3!=u2))))
cout<<"Diagonala 1="<<(l1*l2)*sin(u1/2)<<" si diagonala
2="<<(l2*l3)*sin(u2/2)<<";"<<endl;
else if
(((l1==l3)&&(l2==l4)&&(l2!=l3))&&((((u1>0)&&(u1<90))&&((u2>90)&&(u2<180
))&&((u3>0)&&(u3<90))&&((u4>90)&&(u4<180)))&&((u1==u3)&&(u2==u4)&&
(u3!=u2)))) cout<<"Diagonala 1="<<(l1*l2)*sin(u1/2)<<" si diagonala
2="<<(l2*l3)*sin(u2/2)<<";"<<endl;
}
int main() {
float lat1;
float lat2;
float lat3;
float lat4;
float ung1;
float ung2;
float ung3;
float ung4;
float Pe;
cout<<"------------------------"<<endl;
cout<<"Dati lungimea laturii 1:";
cin>>lat1;
cout<<"Dati lungimea laturii 2:";
cin>>lat2;
cout<<"Dati lungimea laturii 3:";
cin>>lat3;
cout<<"Dati lungimea laturii 4:";
cin>>lat4;
cout<<"------------------------"<<endl;
cout<<"Masura 1 unghi :";
cin>>ung1;
cout<<"Masura 2 unghi :";
cin>>ung2;
cout<<"Masura 3 unghi :";
cin>>ung3;
cout<<"Masura 4 unghi :";
cin>>ung4;
paralelogram p(lat1,lat2,lat3,lat4,ung1,ung2,ung3,ung4,Pe);
p.Tip();
p.Inaltime();
Perimetru(p);//prietenul clasei Perimetru
p.Aria();
p.Diagonala(); }
4) Tabel de valori :

d Date de intrare Date de iesire


Nr.test
l1,l2,l3,l4 u1,u2,u3,u4 Tipul Inaltime Perim Aria Diagon
(cm) (cm) (cm2) (cm)

1) 5,9,5,9 90,90,90,90 Dreptunghi 5 ; 9 cm 28 cm 45 cm2 10,29 cm

2) 10,10,10,10 90,90,90,90 Patrat 10 cm 40 cm 100 cm2 14,14 cm

3) 9,9,9,9 15,165,15,165 Romb 5,85 cm 36 cm 52,6 cm2 75,9;59,14

4) 5,13,5,13 15,165,15,165 Oarecare 3,25 cm 36 cm 16,2 cm2 60,9;47,46

5) Teste:
1 Test
2 Test

3 Test

4 Test
6) Concluzie:
Participnd la acest proect, am fcut cunotin cu noi tehnici de
programare (POO-Programarea Orientata pe Obiecte). Acest tip te
programare este unul mai complicat, dar interesant , care ii dezvolta
ambiia de lucru cu aceast. Aici am descoperit o nou tehnic, de lucru cu
Constructorii, Distructorii, Clasele si Prietenii, care ntr-un final creeaz
caracteristicele unor obiecte virtuale. M-ia placut s particip la aceast
proiect, i am descoperit multe lucruri noi.
7) Bibliografie:
Caetul la Programarea Orientata pe Obiecte.

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