Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/56: Рейтинг темы: голосов - 56, средняя оценка - 4.70
Автор FAQ
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
1

Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними

15.09.2010, 00:09. Показов 10812. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{float a,b,c,x;
 
    setlocale(LC_ALL,"Russian");
    cout<<"Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними;"<<endl;
    cout<<"Введите длину A:";
    cin>>a;
    cout<<"Введите длину B:";
    cin>>b;
    cout<<"Введите величину угла в градусах:";
    cin>>x;
    c=pow(a,2)+pow(b,2)-2*a*b*cos(x);
cout<<"Сторона С="<<c<<endl;
    system("pause");
 
 
}
вроде норм компилируется и запускается но при проверке выдает неправильные рез-ты почему?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2010, 00:09
Ответы с готовыми решениями:

Определить сторону треугольника, если известны две другие стороны и угол между ними
Определить сторону треугольника, если известны две другие стороны b, c и угол между ними ...

Вычислить периметр и площадь произвольного треугольника, если известны две его стороны и угол между ними
Вычислить а) периметр; б) площадь произвольного треугольника, если известны две его стороны и угол...

Даны две стороны треугольника и угол между ними
Доброго вечера! Помогите, пожалуйста, с этой задачей &quot;Даны две стороны треугольника и угол между...

Две стороны треугольника равны a и b, а угол между ними γ
Две стороны треугольника равны a и b, а угол между ними γ. Найдите третью сторону треугольника, его...

31
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.09.2010, 00:19 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

А весь код викладывать уже не модно ?

Добавлено через 4 минуты
А если так ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <math.h>
#include <iostream>
using namespace std;
#define M_PI 3.14159265
int main()
{
setlocale(LC_ALL,"Russian");
float a,b,c,x;
    cout<<"Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними;"<<endl;
        cout<<"Введите длину A:";
        cin>>a;
        cout<<"Введите длину B:";
        cin>>b;
        cout<<"Введите величину угла в градусах:";
        cin>>x;
        c=pow(a,2)+pow(b,2)-2*a*b*cos(x)* M_PI / 180;
cout<<"Сторона С="<<c<<endl;
        system("pause");
}
0
Автор FAQ
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
15.09.2010, 00:28  [ТС] 3
неа,там по формуле a^2+b^2-2abcosy

это и есть весь код
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
15.09.2010, 07:44 4
Правильная формула:
c=sqrt(a*a+b*b-2*a*b*cos(x*M_PI/180));

Ф-ция cos считается для радиан, их надо перевести в градусы. Ну и, естественно, корень надо брать. Проверка: a=3; b=4; x=90. Получается c=5.
1
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.09.2010, 16:10 5
Цитата Сообщение от dihlofos Посмотреть сообщение
Правильная формула:
c=sqrt(a*a+b*b-2*a*b*cos(x*M_PI/180));
Ну я так же написал,только не в скобках.
И pow() не надо.
1
Автор FAQ
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
15.09.2010, 19:06  [ТС] 6
Объясните что значит
C++
1
#define M_PI 3.14159265
?

Добавлено через 5 минут
Цитата Сообщение от Asics^ Посмотреть сообщение
И pow() не надо.
почему?
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
15.09.2010, 19:17 7
REALIST07
M_PI - константа, чтобы задать значение числа пи. Правда зачем она здесь, когда M_PI уже определено в библиотеке math. Так что можно удалить.

Можно и pow, просто для квадрата лучше x*x.

Asics^
Ну да, между cos(x*y) и cos(x)*y прямо никакой разницы
0
Автор FAQ
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
15.09.2010, 19:29  [ТС] 8
все равно не получается в углы перевести,вот мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <iostream>
#include<math.h>
#define M_PI 3.14159265
using namespace std;
void main()
 
{float a,b,c,x;
    setlocale(LC_ALL,"Russian");
    cout<<"Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними;"<<endl;
    cout<<"Введите длину A:";
    cin>>a;
    cout<<"Введите длину B:";
    cin>>b;
    cout<<"Введите величину угла в градусах:";
    cin>>x;
    c=sqrt(a*a+b*b-2*a*b*cos(x*M_PI/180));
 
cout<<"Сторона С="<<c<<endl;
    system("pause");
 
 
}
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
15.09.2010, 19:44 9
Что получается-то? Пример приведите хоть.
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.09.2010, 19:50 10
Цитата Сообщение от dihlofos Посмотреть сообщение
Правда зачем она здесь, когда M_PI уже определено в библиотеке math
Я сам удивилсо и не мог долго понять почему если я не обявлю ету константу,мне выбивает ошыбку.
0
Автор FAQ
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
15.09.2010, 19:51  [ТС] 11
попробуйте ввести 1,1 и 90 по идее ответ должен быть 2!а он равен 1.всякая хрень
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
15.09.2010, 19:57 12
Так ведь корень берётся!

Цитата Сообщение от REALIST07 Посмотреть сообщение
попробуйте ввести 1,1 и 90 по идее ответ должен быть 2!
Проверьте по Т.Пифагора, где вы видели такой треугольник? По идее ответ должен быть корень из 2.
0
Автор FAQ
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
15.09.2010, 20:03  [ТС] 13
А там хоть бери хоть не бери корень все равно получается 1.41421 при а=1 в=1 х=90
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.09.2010, 20:24 14
Я так понимаю,ето стандартная теорема косинусов ?

Добавлено через 13 минут
Ну так всё правильно,корень из 2.
0
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
15.09.2010, 20:53 15
зачем она здесь, когда M_PI уже определено в библиотеке math. Так что можно удалить.
а у меня M_PI - undeclared identifier.Получается нет у меня в math.h функции M_PI? (VS Express)

Интуресно чем #define M_PI 3.14 лучше чем const float M_PI = 3.14 ?
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.09.2010, 20:54 16
При дефайне не отводится память под переменную, компилятор заменяет все вхождения M_PI на соответствующее число.
1
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.09.2010, 21:24 17
Я всегда думал что
C
1
#define M_PI 3.14
ето Си а
C++
1
const float M_PI = 3.14
ето С++
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.09.2010, 04:42 18
Цитата Сообщение от dihlofos Посмотреть сообщение
REALIST07
M_PI - константа, чтобы задать значение числа пи. Правда зачем она здесь, когда M_PI уже определено в библиотеке math. Так что можно удалить.
не, эта штука не стандартная
1
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
16.09.2010, 06:13 19
Цитата Сообщение от accept Посмотреть сообщение
не, эта штука не стандартная
Видно зависит от компилятора? В билдере нормально пашет. В студии заработало после:

C++
1
2
#define _USE_MATH_DEFINES
#include <cmath>
Цитата Сообщение от REALIST07 Посмотреть сообщение
А там хоть бери хоть не бери корень все равно получается 1.41421 при а=1 в=1 х=90
корень из 2 = 1.41421, всё правильно.
Почитайте
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.09.2010, 07:23 20
Цитата Сообщение от dihlofos
Видно зависит от компилятора?
это значит, что она вообще может отсутствовать
math.h есть в стандарте и всё, что в нём есть, тоже есть в стандарте, а вот если в стандарте чего-нибудь нет, а в компиляторе есть, то это - расширение компилятора
в gcc нету
а не, есть
Код
/* Some useful constants.  */
#if defined __USE_BSD || defined __USE_XOPEN
# define M_E            2.7182818284590452354   /* e */
# define M_LOG2E        1.4426950408889634074   /* log_2 e */
# define M_LOG10E       0.43429448190325182765  /* log_10 e */
# define M_LN2          0.69314718055994530942  /* log_e 2 */
# define M_LN10         2.30258509299404568402  /* log_e 10 */
# define M_PI           3.14159265358979323846  /* pi */
# define M_PI_2         1.57079632679489661923  /* pi/2 */
# define M_PI_4         0.78539816339744830962  /* pi/4 */
# define M_1_PI         0.31830988618379067154  /* 1/pi */
# define M_2_PI         0.63661977236758134308  /* 2/pi */
# define M_2_SQRTPI     1.12837916709551257390  /* 2/sqrt(pi) */
# define M_SQRT2        1.41421356237309504880  /* sqrt(2) */
# define M_SQRT1_2      0.70710678118654752440  /* 1/sqrt(2) */
#endif
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
#define __USE_BSD
#include <math.h>
 
int main(void)
{
    printf("%f" "\n", M_PI);
    return 0;
}
0
16.09.2010, 07:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2010, 07:23
Помогаю со студенческими работами здесь

2.13. Известны две стороны треугольника а,b и угол между ними. Найти его площадь.
2.13. Известны две стороны треугольника а,b и угол между ними. Найти его площадь.

Известны стороны a и b и угол между ними α. Найти третью сторону c
1. Дан произвольный треугольник. Известны стороны a и b и угол между ними α. Найти третью...

Найти заданный угол треугольника, зная две его стороны и периметр
Всем привет. Что то я совсем туплю с этой тригонометрией, хотя школу всего 5 лет назад закончил. В...

Возможно ли, найти другие стороны и углы у треугольника, если даны угол ACE и угол ECB, а так же стороны АЕ и ЕВ
Вопрос такой, возможно найти ли другие стороны и углы у треугольника, если даны угол ACE и угол...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru