Форум программистов, компьютерный форум CyberForum.ru

Нахождение углов треугольника по трем его сторонам - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.89
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
08.09.2013, 11:59     Нахождение углов треугольника по трем его сторонам #1
На данный момент у меня получается вот так.. На форуме есть подобная тема но она на языке паскаль Найти углы треугольника по его сторонам

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include "math.h"
#include <iostream>
using namespace std; 
int main()
{
double a,b,c,S,u;
 
cout << "a = ";
cin >> a; 
cout << "b = ";
cin >> b;
cout << "c = ";
cin >> c;
 
cos(u)=a*a/(b*b+a*a-2*b*c);   // Вот в этом моменте я да и c++ входит в ступор.) Не знаю как это написать
u=acos(u);                              // по другому
 
cout<<"u = "<<u<<"\n"; 
system("PAUSE");
return 0; 
}
Инструкцию по нахождению углов в интернете я нашёл такую:
Обозначим длины сторон треугольника a=2, b=3, c=4, а его углы u, v, w, каждый из которых лежит напротив одной сторон. По теореме косинусов квадрат длины стороны треугольника равен сумме квадратов длин двух других сторон минус удвоенное произведение этих сторон на косинус угла между ними. То есть a^2 = b^2 + c^2 - 2bc*cos(u). Подставим в это выражение длины сторон и получим: 4 = 9 + 16 - 24cos(u).

2
Выразим из полученного равенства cos(u). Получим следующее: cos(u) = 7/8. Далее найдём собственно угол u. Для этого посчитаем arccos(7/8). То есть угол u = arccos(7/8).

3
Аналогичным образом, выражая другие стороны через остальные, найдём оставшиеся углы.

Есть у кого идеи выразить cos(u) и потом через arccos получить u?

Добавлено через 25 минут
Нашёл формулу: c*c=a*a+b*b-2*a*b*cos gamma --> gamma=acos(a*a+b*b-c*c/(2*a*b))
Возможно это она же что пытались сказать в инструкции,но всё равно получается результат не правильный,при a = 3, b = 4, c = 5 gamma получается = -1.#IND . Даже не понятно что это. Видимо что то путаю.. Нужна помощь..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include "math.h"
#include <iostream>
using namespace std; 
int main()
{
double a,b,c,S,gamma;
 
cout << "a = ";
cin >> a; 
cout << "b = ";
cin >> b;
cout << "c = ";
cin >> c;
 
gamma=acos(a*a+b*b-c*c/(2*a*b));
 
cout<<"gamma = "<<gamma<<"\n"; 
system("PAUSE");
return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2013, 11:59     Нахождение углов треугольника по трем его сторонам
Посмотрите здесь:

площадь треугольника, если известны координаты его углов. Введите координаты углов C++
C++ Вычисление одного из углов треугольника, когда заданы значения двух других углов
Определить функцию вычисления площади треугольника по трем его сторонами, заданными действительными числами C++
C++ Создать функцию, подсчитывающую по заданным сторонам треугольника величины его углов
C++ Возможность существования треугольника по сторонам
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
08.09.2013, 12:11     Нахождение углов треугольника по трем его сторонам #2
неправилно потому-что...
просто косинус выражается из формулы так
c*c=a*a+b*b-2*a*b*cos(gamma) --> gamma=acos( (-c*c+a*a+b*b )/(2*a*b) )
Т.е. скобки пропущены...
C++
1
gamma=acos((a*a+b*b-c*c)/(2*a*b));
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
08.09.2013, 14:28  [ТС]     Нахождение углов треугольника по трем его сторонам #3
По этой формуле при значениях 3,4,5 получается 1,5708% что мало вероятно,если посчитать по калькулятору на этом сайте http://planetcalc.ru/534/ то получается gamma 90%
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
08.09.2013, 14:33     Нахождение углов треугольника по трем его сторонам #4
Цитата Сообщение от StriBog45 Посмотреть сообщение
По этой формуле при значениях 3,4,5 получается 1,5708% что мало вероятно,если посчитать по калькулятору на этом сайте http://planetcalc.ru/534/ то получается gamma 90%
acos выдаёт результат в радианах, а не в градусах.
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
08.09.2013, 15:34  [ТС]     Нахождение углов треугольника по трем его сторонам #5
Спасибо обоим,это многое объясняет
Yandex
Объявления
08.09.2013, 15:34     Нахождение углов треугольника по трем его сторонам
Ответ Создать тему
Опции темы

Текущее время: 08:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru