Неправильно считает значение
Считаю параметры треугольника. При выводе длины всех медиан, значение у всех 0. Почему?
#include <iostream
#include <cmath
void height(float AB, float BC, float AC)
{
float h1_AB, h2_BC, h3_AC, P2;
float P = (AB + BC + AC);
P2 = P / 2;
h1_AB = ((2 * sqrt(P2 * (P2 - AB) * (P2 - BC) * (P2 - AC))) / AB);
h2_BC = ((2 * sqrt(P2 * (P2 - BC) * (P2 - AB) * (P2 - AC))) / BC);
h3_AC = ((2 * sqrt(P2 * (P2 - AC) * (P2 - AB) * (P2 - BC))) / AC);
std::cout << "h1_AB= " << h1_AB << std::endl;
std::cout << "h2_BC= " << h2_BC << std::endl;
std::cout << "h3_AC= " << h3_AC << std::endl;
std::cout << "Периметр= " << P << std::endl;
}
void median(float AB, float BC, float AC)
{
double med1_AB, med2_BC, med3_AC;
med1_AB = (1 / 2) * sqrt(2 * pow(AC, 2) + 2 * pow(BC, 2) - pow(AB, 2));
med2_BC = (1 / 2) * sqrt(2 * pow(AB, 2) + 2 * pow(AC, 2) - pow(BC, 2));
med3_AC = (1 / 2) * sqrt(2 * pow(AB, 2) + 2 * pow(BC, 2) - pow(AC, 2));
std::cout << "med1_AB= " << med1_AB << std::endl;
std::cout << "med2_BC= " << med2_BC << std::endl;
std::cout << "med3_AC= " << med3_AC << std::endl;
}
int main()
{
setlocale(LC_ALL, "Russian");
int x1, y1, x2, y2, x3, y3;
std::cout << "Эта программа вычисляет параметры треугольника (координаты точек - целые числа) " << std::endl;
std::cout << "Введите координату x1 точки A: ";
std::cin >> x1;
std::cout << "\nВведите координату y1 точки A: ";
std::cin >> y1;
std::cout << "\nВведите координату x2 точки B: ";
std::cin >> x2;
std::cout << "\nВведите координату y2 точки B: ";
std::cin >> y2;
std::cout << "\nВведите координату x3 точки C: ";
std::cin >> x3;
std::cout << "\nВведите координату y3 точки C: ";
std::cin >> y3;
float AB, BC, AC;
AB = sqrt(pow((x2 - x1), 2) + pow((y2 - y1), 2));
BC = sqrt(pow((x3 - x2), 2) + pow((y3 - y2), 2));
AC = sqrt(pow((x1 - x3), 2) + pow((y1 - y3), 2));
if ((AB + BC > AC) && (BC + AC > AB) && (AC + AB > BC))
{
std::cout << "AB= " << AB << std::endl;
std::cout << "BC= " << BC << std::endl;
std::cout << "AC= " << AC << std::endl;
}
else
{
std::cout << "данного треугольника не существует" << std::endl;
}
height(AB, BC, AC);
median(AB, BC, AC);
return 0;
}
Ответы (2 шт):
Автор решения: Эникейщик
→ Ссылка
Потому что 1/2 в С++ равно 0 (это основы языка, 1 и 2 int, значит и результат int), а произведение любого числа на 0 равно 0.
Автор решения: Harry
→ Ссылка
Потому что вот это
(1 / 2)
равно 0. Потому что деление целочисленное, с отбрасыванием дробной части. Не мелочитесь, пишите 0.5 или хотя бы /2....