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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.89
StriBog45
6 / 6 / 2
Регистрация: 03.09.2013
Сообщений: 81
#1

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

08.09.2013, 11:59. Просмотров 4239. Ответов 4
Метки нет (Все метки)

На данный момент у меня получается вот так.. На форуме есть подобная тема но она на языке паскаль Найти углы треугольника по его сторонам

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; 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2013, 11:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нахождение углов треугольника по трем его сторонам (C++):

Создать функцию, подсчитывающую по заданным сторонам треугольника величины его углов - C++
Привет, помогите составить программу. Создать функцию, подсчитывающую по заданным сторонам треугольника величины его углов. Выведите...

Построение треугольника по трем сторонам, найти площадь - C++
Запутался с написанием программы Помогите! Даны три числа. Если они могут быть длинами сторон разностороннего остроугольного...

По данным трем сторонам треугольника вычислить площадь и радиусы вписанной/описанной окружностей - C++
Даны три стороны треугольника a,b,c. Вычислить: его площадь S (по формуле Герона); радиус вписанной окружности r; радиус описанной...

Разработать функцию, определяющую площадь и значения высот треугольника по заданным трем сторонам - C++
Разработать функцию, определяющую площадь и значения высот треугольника по заданным трем сторонам. Для вычисления площади используется...

площадь треугольника, если известны координаты его углов. Введите координаты углов - C++
Напишите программу, которая вычисляет площадь треугольника, если известны координаты его углов. Введите координаты углов (числа...

Определить вид треугольника по его сторонам - C++
Помогите кто-нибудь Даны три числа.Если они могут быть длинами сторон треугольника,определите его...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 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));
1
StriBog45
6 / 6 / 2
Регистрация: 03.09.2013
Сообщений: 81
08.09.2013, 14:28  [ТС] #3
По этой формуле при значениях 3,4,5 получается 1,5708% что мало вероятно,если посчитать по калькулятору на этом сайте http://planetcalc.ru/534/ то получается gamma 90%
0
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 выдаёт результат в радианах, а не в градусах.
1
StriBog45
6 / 6 / 2
Регистрация: 03.09.2013
Сообщений: 81
08.09.2013, 15:34  [ТС] #5
Спасибо обоим,это многое объясняет
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2013, 15:34
Привет! Вот еще темы с ответами:

Найти максимальную площадь треугольника по двум его сторонам - C++
Формат ввода Первая строка ввода содержит два целых числа A и B (1 ≤ A, B ≤ 109) – заданные длины сторон. Формат вывода Вывести одно...

Написать функцию, вычисляющую по заданным сторонам треугольника его площадь - C++
Написать функцию, вычисляющую по заданным сторонам треугольника его площадь

Написать функцию, вычисляющую по заданным сторонам треугольника его площадь - C++
Написать функцию, вычисляющую по заданным сторонам треугольника его площадь.

Оформить процедуру для расчета периметра и площади треугольника по его сторонам - C++
Оформить процедуру для расчета периметра и площади треугольника по его сторонам. Написать программу, которая по известным сторонам двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.09.2013, 15:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru