Witam,
Mam do napisania takie zadanie:
"Napisać metodę dodawania dwóch prostokątów. Nowy prostokąt powinien być najmniejszym obejmującym swoim polem dwa dodawane prostokąty".
Napisałem taki kod - metoda DodawanieDwochProstokatow().
Prostokąt pierwszy ma pole 15, drugi 60. Metoda zwraca wynik 75.
#include "stdafx.h"
#include <iostream>
using namespace std;
class Punkt
{
public:
double x;
double y;
};
class Prostokat
{
private:
Punkt przekatnaA;
Punkt przekatnaD;
public:
// ustaw przekątną A i D
void Ustaw1(double aPrzekatnaA, double aPrzekatnaAy,
double aPrzekatnaDx, double aPrzekatnaDy)
{
przekatnaA.x = aPrzekatnaA;
przekatnaA.y = aPrzekatnaAy;
przekatnaD.x = aPrzekatnaDx;
przekatnaD.y = aPrzekatnaDy;
}
void PowiekszenieProstkata(double paramPowiekszeniaProstokata)
{
if (paramPowiekszeniaProstokata < 0.0)
return;
// wspolrzedna x srodka prosotkata
double srodekOx = (przekatnaD.x + przekatnaA.x) / 2;
// wspolrzedna y srodka prostokata
double srodekOy = (przekatnaA.y + przekatnaD.y) / 2;
// wspolrzedna A` powiekszonego prostokata
przekatnaA.x=srodekOx+paramPowiekszeniaProstokata*(przekatnaA.x-srodekOx);
przekatnaA.y=srodekOy+paramPowiekszeniaProstokata*(przekatnaA.y-srodekOy);
// wspolrzedna D` powiekszonego prostokata
przekatnaD.x = srodekOx + paramPowiekszeniaProstokata * (przekatnaD.x - srodekOx);
przekatnaD.y = srodekOy + paramPowiekszeniaProstokata * (przekatnaD.y - srodekOy);
}
double DodawanieDwochProstokatow()
{
return abs((przekatnaD.y-przekatnaA.y) * (przekatnaD.x-przekatnaA.x)) +
(abs((przekatnaD.y-przekatnaA.y) * (przekatnaD.x-przekatnaA.x))) / 4;
}
int _tmain(int argc, _TCHAR* argv[])
{
Prostokat prostokat;
prostokat.Ustaw1(2, -8, 7, -11);
prostokat.PowiekszenieProstkata(2);
cout << prostokat.DodawanieDwochProstokatow();
system("pause");
return 0;
}
Edit: Jednak kod nie jest poprawny. Mam obecnie współrzędne większego prostokąta, a potrzebuje
współrzędne mniejszego prostokąta, co by obliczyć jego pole, potem zsumować.