Код не проходит все тесты

Рейтинг: -1Ответов: 1Опубликовано: 23.05.2023

Всем доброго времени суток! Кто может подсказать ошибку в коде к задаче "наименьшее расстояние". Даны координаты вершин треугольника, координаты точки D, лежащая внутри треугольника, требуется найти и вывести наименьшее из расстояний от точки D до какой-либо из сторон треугольника.( https://docs.google.com/viewer?url=http://statement.bacs.cs.istu.ru/statement/get/CjNiYWNzL3Byb2JsZW0vc2Nob29sXzdfMTBfNC9zdGF0ZW1lbnQvdmVyc2lvbnMvQy9kb2MSBgoESK35ow/bacs/akF-3ReCFrr_DL0mmj2I-z5BnXrlP9V-5anuoPzJC-Rhrlexniz9X6ZINvsV7GfVIIB9MYvh9j2uTdyCBTobe1nTCGsznB8aWcydNbpUoLcrXvtTe-uW8hsW0SwXJfo2UV7_smGjxuFrE2Pwmfa-DOjdEcSfEwlB6WgAtwqwuiAiH-QJagQA3UiXSKd5swksLAP-Ere9OOypQdmZLcM8xE8TkNQWioiBsFuMzqmhAAcwSK2r_Zxqz9IhfdJK0R9xdzyDVn594XcoWvN08iSm_QfgqFYVTkZ1tnkjHm0mHLfSlGiIXhWbOLau9TkGPWGl2ajRDPz8xyFqqK5NB9BA_Q) Код проходит на 79 баллов. Код:

#include <iostream>
#include <cmath>
 
 
using namespace std;
 
double getArea(double ax, double ay, double bx, double by, double cx, double cy){
    return fabs((bx-ax)*(ay+by)+(cx-bx)*(cy+by)+(ax-cx)*(ay+cy))/2;
}
int main()
{
    double ax, ay, bx, by, cx, cy, dx, dy;
    double min = 10000;
    cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy;
    double ab=sqrt(pow((bx-ax), 2)+pow((by-ay),2));
    double bn=sqrt(pow((cx-bx),2)+pow((cy - by),2));
    double an=sqrt(pow((cx-ax),2)+pow((cy-ay),2));       
    if ((2*getArea(ax, ay, bx, by, dx, dy))/ab<min)
        min = (2*getArea(ax, ay, bx, by, dx, dy))/ab;
    if ((2*getArea(bx, by, cx, cy, dx, dy))/bn<min)
        min =(2*getArea(bx, by, cx, cy, dx, dy))/bn;
    if ((2*getArea(ax, ay, cx, cy, dx, dy))/an<min)
        min =(2*getArea(ax, ay, cx, cy, dx, dy))/an;
   cout<<round(min*10000)/10000;
 
}

Ответы

▲ 1
#include <iostream>
#include <cmath>

using namespace std;

double getHeight(double ax, double ay, double bx, double by, double dx, double dy){
    return fabs((bx-ax)*(dy-ay)-(dx-ax)*(by-ay))/sqrt(pow(bx-ax,2)+pow(by-ay,2));
}
int main(){
    double ax, ay, bx, by, cx, cy, dx, dy;
    cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy;
    double min = getHeight(ax, ay, bx, by, dx, dy);
    double nxt = getHeight(bx, by, cx, cy, dx, dy);
    if (nxt<min) min=nxt;
    nxt = getHeight(ax, ay, cx, cy, dx, dy);
    if (nxt<min) min=nxt;
    cout.precision(4); cout<<min;
}