Найдите ,пожалуйста ошибку,в решении задачи{ о целочисленным координатам вершин...

0 голосов
46 просмотров

Найдите ,пожалуйста ошибку,в решении задачи{
о целочисленным координатам вершин треугольника (x1,y1), (x2,y2) и (x3,y3) требуется вычислить его площадь.

Входные данные

Входной файл содержит 6 целых чисел x1,y1,x2,y2,x3,y3 – координаты вершин треугольника. Все числа не превышают 106 по абсолютной величине.}
мой код C++[
#include
#include
#include
#include
using namespace std;

int main()
{
long long x1,x2,x3,y1,y2,y3;
double d1,d2,d3;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
d1=hypot((x1-x2),(y1-y2));
d2=hypot((x1-x3),(y1-y3));
d3=hypot((x2-x3),(y2-y3));
double p;
p=(d1+d2+d3)/2;
double s,sp;
sp=p*(p-d1)*(p-d2)*(p-d3);
cout<<sqrt(sp) ; <br>return 0;
}]


Информатика (196 баллов) | 46 просмотров
0

в с++ есть функция hypot ,которая определяет длину гипотенузы,а посмотрев на формулу Герона ,можно увидеть теорему Пифагора ,где d1,d2,d3 гипотенузы, и ,по совместительству, стороны треугольника.

0

ой,я не заметил ,что здесь немного каверкает код сейчас всё исправил.

Дан 1 ответ
0 голосов
Правильный ответ

#include
#include
using namespace std;

int main()
{
long long x1,x2,x3,y1,y2,y3;
double d1,d2,d3;
double p, s;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
d1=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
d2=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
d3=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
p=(d1+d2+d3)/2;
s=sqrt(p*(p-d1)*(p-d2)*(p-d3));
cout << s;<br>return 0;
}

Пример:
1 1 4 1 1 5
6

(194k баллов)
0

К сожалению,это решение ,тоже, не проходит на аналогичном тесте

0

Так это Ваше long long. Если такие большие числа не нужны, то можно и меньше взять.

0

Автора вопроса, конечно.)