Нужно написать функцию, вычисляющую длину отрезка по координатам его концов. С помощью этой функции вычислить периметр треугольника по координатам трех его вершин. Все числа по модулю не превосходят 30000. значение периметра этого треугольника с точностью до 6 знаков после десятичной точки. Вот моя программа, проходит 25/32 тестов. Что нужно исправить?
#include <iostream>
#include <cmath>
double L (int x, int y ,int x1, int y1)
{
return sqrt( ( x- x1 )*( x- x1 ) + ( y-y1 )*( y-y1 ));
}
long int a,b,c,d,e,f;
double s1,s2,s3,s,p,P;
using namespace std;
int main() {
cin>>a>>b>>c>>d>>e>>f;
s1=L(a,b,c,d);
s2=L(c,d,e,f);
s3=L(e,f,a,b);
P=s1+s2+s3;
cout<<P;
return 0;
}
Юлия, попробуйте вместо своей функции L() такую и прогоните тесты с ней:
double L (int x, int y ,int x1, int y1)
{
double x2 = (double)( x-x1 )*( x-x1 );
double y2 = (double)( y-y1 )*( y-y1 );
return sqrt( x2 + y2 );
}
PS: да, приведение типа можно было и под sqrt() положить. Но так нагляднее. И вместо double для промежуточных значений можно брать и long int.
PPS: да, в современном С++ принято приводить типы другими словами. Но так компактнее и "на скорость не влияет".
PPPS: и еще, раз у Вас есть ограничение на входные значения, то Вы должны их проверять при вводе.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости