Răspuns :
#include <iostream>
#include <cmath>
using namespace std;
class punct{
private:
float x, y;
public:
punct(){
// Ce treubie de facut in constructor?
}
void citire(){
cout<<"Introduceti coordonatele punctului:\n";
cout<<"X: ";
cin>>x;
cout<<"Y: ";
cin>>y;
}
void afisare(){
cout<<"Punct: ("<<x<<", "<<y<<")\n";
}
float getX(){
return x;
}
float getY(){
return y;
}
};
class triunghi{
private:
punct p1, p2, p3;
float distanta(float x1, float y1, float x2, float y2){
return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
}
public:
triunghi(){
}
void citire(){
cout<<"Introduceti coordonatele triunghiului:\n";
p1.citire();
p2.citire();
p3.citire();
}
void afisare(){
cout<<"Triunghi: ";
cout<<"("<<p1.getX()<<", "<<p1.getY()<<"); ";
cout<<"("<<p2.getX()<<", "<<p2.getY()<<"); ";
cout<<"("<<p3.getX()<<", "<<p3.getY()<<"); ";
cout<<"\n";
cout<<"Aria triunghiului: "<<aria()<<"\n";
cout<<"Perimetrul triunghiului: "<<perimetrul()<<"\n";
}
float aria(){
float x1 = p1.getX();
float x2 = p2.getX();
float x3 = p3.getX();
float y1 = p1.getY();
float y2 = p2.getY();
float y3 = p3.getY();
float det;
det = x1*y2*1 + x2*y3*1 + x3*y1*1 - 1*y2*x3 - 1*y3*x1 - 1*y1*x2;
det = abs(det);
return det * 1/2;
}
float perimetrul(){
float p = 0;
float x1 = p1.getX();
float x2 = p2.getX();
float x3 = p3.getX();
float y1 = p1.getY();
float y2 = p2.getY();
float y3 = p3.getY();
p += distanta(x1, y1, x2, y2);
p += distanta(x2, y2, x3, y3);
p += distanta(x3, y3, x1, y1);
return p;
}
};
int main(){
triunghi tr;
tr.citire();
tr.afisare();
cout<<"Aria: "<<tr.aria();
return 0;
}
Nu știu sigur cum se face constructorul de copiere. Dar presupun că merge și fără..? Sau nu știu, ai poate undeva vreun exemplu de cum ar trebui să arate acest minunat constructor?
#include <cmath>
using namespace std;
class punct{
private:
float x, y;
public:
punct(){
// Ce treubie de facut in constructor?
}
void citire(){
cout<<"Introduceti coordonatele punctului:\n";
cout<<"X: ";
cin>>x;
cout<<"Y: ";
cin>>y;
}
void afisare(){
cout<<"Punct: ("<<x<<", "<<y<<")\n";
}
float getX(){
return x;
}
float getY(){
return y;
}
};
class triunghi{
private:
punct p1, p2, p3;
float distanta(float x1, float y1, float x2, float y2){
return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
}
public:
triunghi(){
}
void citire(){
cout<<"Introduceti coordonatele triunghiului:\n";
p1.citire();
p2.citire();
p3.citire();
}
void afisare(){
cout<<"Triunghi: ";
cout<<"("<<p1.getX()<<", "<<p1.getY()<<"); ";
cout<<"("<<p2.getX()<<", "<<p2.getY()<<"); ";
cout<<"("<<p3.getX()<<", "<<p3.getY()<<"); ";
cout<<"\n";
cout<<"Aria triunghiului: "<<aria()<<"\n";
cout<<"Perimetrul triunghiului: "<<perimetrul()<<"\n";
}
float aria(){
float x1 = p1.getX();
float x2 = p2.getX();
float x3 = p3.getX();
float y1 = p1.getY();
float y2 = p2.getY();
float y3 = p3.getY();
float det;
det = x1*y2*1 + x2*y3*1 + x3*y1*1 - 1*y2*x3 - 1*y3*x1 - 1*y1*x2;
det = abs(det);
return det * 1/2;
}
float perimetrul(){
float p = 0;
float x1 = p1.getX();
float x2 = p2.getX();
float x3 = p3.getX();
float y1 = p1.getY();
float y2 = p2.getY();
float y3 = p3.getY();
p += distanta(x1, y1, x2, y2);
p += distanta(x2, y2, x3, y3);
p += distanta(x3, y3, x1, y1);
return p;
}
};
int main(){
triunghi tr;
tr.citire();
tr.afisare();
cout<<"Aria: "<<tr.aria();
return 0;
}
Nu știu sigur cum se face constructorul de copiere. Dar presupun că merge și fără..? Sau nu știu, ai poate undeva vreun exemplu de cum ar trebui să arate acest minunat constructor?
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!