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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
15.09.2010, 00:09     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #1
есть код
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");
 
 
}
вроде норм компилируется и запускается но при проверке выдает неправильные рез-ты почему?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2010, 00:09     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними
Посмотрите здесь:

C++ В треугольнике заданы две стороны a, b и площадь S. Вычислить и вывести на экран остальные элементы треугольника.
В треугольнике заданы две стороны a, b ,c. Вычислить и вывести на экран остальные элементы треугольника. C++
C++ Условие: По двум сторонам и углу между ними в треугольнике АВС найти два остальных угла и третью сторону. c^2 = a^2 + b^2 - 2 ab cos A
C++ Вычислить углы треугольника зная его стороны.
Зная три стороны, определить, являются ли они сторонами треугольника и является ли он прямоугольным C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.09.2010, 00:19     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #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");
}
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
15.09.2010, 00:28  [ТС]     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #3
неа,там по формуле a^2+b^2-2abcosy

это и есть весь код
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
15.09.2010, 07:44     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #4
Правильная формула:
c=sqrt(a*a+b*b-2*a*b*cos(x*M_PI/180));

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

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

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

Asics^
Ну да, между cos(x*y) и cos(x)*y прямо никакой разницы
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
15.09.2010, 19:29  [ТС]     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #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");
 
 
}
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
15.09.2010, 19:44     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #9
Что получается-то? Пример приведите хоть.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.09.2010, 19:50     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #10
Цитата Сообщение от dihlofos Посмотреть сообщение
Правда зачем она здесь, когда M_PI уже определено в библиотеке math
Я сам удивилсо и не мог долго понять почему если я не обявлю ету константу,мне выбивает ошыбку.
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
15.09.2010, 19:51  [ТС]     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #11
попробуйте ввести 1,1 и 90 по идее ответ должен быть 2!а он равен 1.всякая хрень
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
15.09.2010, 19:57     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #12
Так ведь корень берётся!

Цитата Сообщение от REALIST07 Посмотреть сообщение
попробуйте ввести 1,1 и 90 по идее ответ должен быть 2!
Проверьте по Т.Пифагора, где вы видели такой треугольник? По идее ответ должен быть корень из 2.
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
15.09.2010, 20:03  [ТС]     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #13
А там хоть бери хоть не бери корень все равно получается 1.41421 при а=1 в=1 х=90
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.09.2010, 20:24     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #14
Я так понимаю,ето стандартная теорема косинусов ?

Добавлено через 13 минут
Ну так всё правильно,корень из 2.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
15.09.2010, 20:53     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #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 ?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.09.2010, 20:54     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #16
При дефайне не отводится память под переменную, компилятор заменяет все вхождения M_PI на соответствующее число.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.09.2010, 21:24     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #17
Я всегда думал что
C
1
#define M_PI 3.14
ето Си а
C++
1
const float M_PI = 3.14
ето С++
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.09.2010, 04:42     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #18
Цитата Сообщение от dihlofos Посмотреть сообщение
REALIST07
M_PI - константа, чтобы задать значение числа пи. Правда зачем она здесь, когда M_PI уже определено в библиотеке math. Так что можно удалить.
не, эта штука не стандартная
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
16.09.2010, 06:13     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #19
Цитата Сообщение от accept Посмотреть сообщение
не, эта штука не стандартная
Видно зависит от компилятора? В билдере нормально пашет. В студии заработало после:

C++
1
2
#define _USE_MATH_DEFINES
#include <cmath>
Цитата Сообщение от REALIST07 Посмотреть сообщение
А там хоть бери хоть не бери корень все равно получается 1.41421 при а=1 в=1 х=90
корень из 2 = 1.41421, всё правильно.
Почитайте
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2010, 07:23     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними
Еще ссылки по теме:

C++ Вычислите площадь треугольника, если известны две его стороны
Найти координаты второй точки, зная первую точку и расстояние между ними C++
Зная площадь прямоугольного треугольника и угол при основании, найти все стороны треугольника C++

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

Или воспользуйтесь поиском по форуму:
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.09.2010, 07:23     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними #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;
}
Yandex
Объявления
16.09.2010, 07:23     Вычислить сторону треугольника ABC, зная две другие стороны и угол между ними
Ответ Создать тему
Опции темы

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