@Kostya12

Задача найти угол треугольника на Си?

a0ef0688b94048d2b57b47b9e18fa880.jpg
нужно написать программу на си, которая находит угол бета и медиану зная стороны a, b, c ( вводяться с клавиатуры)
По условиям задачи а = 13.2, b = 10.8, c = 8.37.
Я написал вот так:
#include <stdio.h>
#include <math.h>

#define PI 3.14159265

int main() {


	float a, b, c, m;
	long float res;
	printf("a = ");
	scanf("%f",&a);
	printf("b = ");
	scanf("%f",&b);
	printf("c = ");
	scanf("%f",&c);

	res = acos((a * a + c * c - b * b)/(2 * a * c));
	m = 1 / 2 * sqrtf(2 * a * a + 2 * b * b - c * c);
	printf("%f\n", res);
	printf("%f\n", m);

	return 0;
}


но мне выдает вместо угла 0.95..., а медиана вообще 0.0000
  • Вопрос задан
  • 634 просмотра
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
acos возвращает радианы:
Returns the principal value of the arc cosine of x, expressed in radians.
Про медиану - скорее всего что то с типами (не уверен, попробуйте 1.0f в числителе написать)
Ответ написан
Комментировать
m = 1 / 2 * sqrtf(2 * a * a + 2 * b * b - c * c);

Дело в приоритете выполнения арифметических операций и особенностях операций целочисленного деления.

1/2 = 0, отсюда и проблемы.
Замена на
m = 1.0 / 2 * sqrtf(2 * a * a + 2 * b * b - c * c);

исправит ситуацию.

Перевести число из радиан в градусы можно так:
res = 180*acos(...)/PI;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы