"justify"> cout lt; lt; Введіть 1, щоб створити коло; 2, щоб створити прямокутник; 3, щоб створити квадрат lt; lt; endl;
int item1; gt; gt; item1; (item1 == 1)
{
cout lt; lt; Введіть через пробіл радіус і дві координати центру lt; lt; endl;
float r, cx, cy; gt; gt; r gt; gt; cx gt; gt; cy;.push_back (new Circle (r, cx, cy));
}
if (item1 == 2)
{
cout lt; lt; Введіть через пробіл дві координати лівого верхнього кута, потім дві координати правого нижнього кута lt; lt; endl;
float lx, ly, rx, ry; gt; gt; lx gt; gt; ly gt; gt; rx gt; gt; ry;.push_back (new Rectangle (lx, ly, rx, ry));
}
if (item1 == 3)
{
cout lt; lt; Введіть через пробіл дві координати лівого верхнього кута, потім сторону квадрата lt; lt; endl;
float lx, ly, sd; gt; gt; lx gt; gt; ly gt; gt; sd;.push_back (new Quadrate (lx, ly, sd)); [Shapes.size () - 1] - gt; type=3;
}
}
else if (task == 3)//пошук мінімального кола, що описує всі фігури
{
float cx, cy, r=- 1;// тут будемо зберігати найбільший знайдений коло (центр і радіус)
for (int i=0; i lt; Shapes.size (); i ++)//цикл по всіх фігурам
{
if (Shapes [i] - gt; type gt; 1)//для прямокутника і квадрата
{* Main=dynamic_cast lt; Rectangle * gt; (Shapes [i]); (int j=0; j lt; Shapes.size (); j ++)//порівняємо з усіма фігурами
{
if (Shapes [j] - gt; type == 1)//порівнюємо з колом
{*Temp=dynamic_castlt;Circle*gt;(Shapes[j]);dist=sqrt(pow(Main-gt;LTX-Temp-gt;CenterX,2)+pow(Main-gt;LTY-Temp-gt;CenterY,2))+Temp-gt;Radius;// пошук відстані (dist gt; r)//якщо більше поточного радіуса, то беремо його
{
//обчислюємо центр=dist; vectx=((Main-gt;LTX-Temp-gt;CenterX));vecty=((Main-gt;LTY-Temp-gt;CenterY));vecl=sqrt(vectx*vectx+vecty*vecty);prx=vectx*Temp-gt;Radius/vecl;pry=vecty*Temp-gt;Radius/vecl;=Temp-gt;CenterX-prx+((vectx+prx)/2.0); =Temp- gt; CenterY-pry + ((vecty + pry) /2.0);
}
//аналогічно для решти кутів прямоугольника=sqrt(pow(Main-gt;LDX-Temp-gt;CenterX,2)+pow(Main-gt;LDY-Temp-gt;CenterY,2))+Temp-gt;Radius;(distgt;r)
{= dist; vectx=((Main-gt;LDX-Temp-gt;CenterX));vecty=((Main-gt;LDY-Temp-gt;CenterY));vecl=sqrt(vectx*vectx+vecty*vecty);prx=vectx*Temp-gt;Radius/vecl;pry=vecty*Temp-gt;Radius/vecl;=Temp-gt;CenterX-prx+((vectx+prx)/2.0); =Temp- gt; CenterY-pry + ((vecty + pry) /2.0);
} =sqrt(pow(Main-gt;RDX-Temp-gt;CenterX,2)+pow(Main-gt;RDY-Temp-gt;CenterY,2))+Temp-gt;Radius;(distgt;r)
{= dist; vectx=((Main-gt;RDX-Temp-gt;CenterX));vecty=((Main-gt;RDY-Temp-gt;CenterY));vecl=sqrt(vectx*vectx+vecty*vecty);prx=vectx*Temp-gt;Radius/vecl;pry=vecty*Temp-gt;Radius/vecl;=Temp-gt;CenterX-prx+((vectx+prx)/2.0); =Temp- gt; CenterY-pry + ((vecty + pry) /2.0);
} =sqrt(pow(Main-gt;RTX-Temp-gt;CenterX,2)+pow(Main-gt;RTY-Temp-gt;CenterY,2))+Temp-gt;Radius;(distgt;r)
{= dist; vectx=((Main-gt;RTX-Temp-gt;CenterX));vecty=((Main-gt;RTY-Temp-gt;CenterY));vecl=sqrt(vectx*vectx+vecty*vecty);prx=vectx*Temp-gt;Radius/vecl;pry=vecty*Temp-gt;Radius/vecl;=Temp-gt;CenterX-prx+((vectx+prx)/2.0); =Temp- gt; CenterY-pry + ((vecty + pry) /2.0);
}
}
else//якщо порівнюємо з прямокутником/квадратом
{
if (i lt;=j)//уникнути повторів
{
Rectangle * Temp=dynamic_cast lt; Rectangle * gt; (Shapes [j]);
//шукаємо відстані від кожної точки до кожної точки
float dist=sqrt (pow (Main- gt; LTX-Temp- gt; LTX, 2) + pow (Main- gt; LTY-Temp- gt; LTY, 2)); (dist gt ; r)
{= dist; vectx=((Main- gt; LTX-Temp- gt; LTX)); vecty=((Main- gt; LTY-Temp- gt; LTY));=Temp- gt; LTX + (vectx/2.0); =Temp- gt; LTY + (vecty/2.0);
}=sqrt (pow (Main- gt; LTX-Temp- gt; LDX, 2) + pow (Main- gt; LTY-Temp- gt; LDY, 2)); (dist gt; r)
{= dist; vectx=((Main- gt; LTX-Temp- gt; LDX)); vecty=((Main- gt; LTY-Temp- gt; LDY));=Temp- gt; LDX + (vectx/2.0); =Temp- gt; LDY + (vecty/2.0);