0 / 0 / 0
Регистрация: 09.07.2017
Сообщений: 8
1

#define не срабатывает?

09.07.2017, 20:23. Показов 1230. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, вот такая программа для вычисления по формуле (1-tg x)^(ctg x)+ cos(x-y). В общем внизу указано 2 вывода ответа, один через M_PI (Я так понял, это константа самого языка), а второй через константу PI, которую я инициализирую в начале командой #define PI 3.14159265359. Если выполнять программу через M_PI, то ответ правильный(в моем случает 45 град и 45 град дают в ответе 1), а если через PI, то в ответе -1.#IND, что значит отрицательную бесконечность. Чего-то я не понимаю?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <cmath>
 
#define PI 3.14159265359
 
using namespace std;
 
int main(void)
{
    double x, y;
    double a, b, c, d, e, f, result;
 
    cout << "Vvedite x: ";
    cin >> x;
    cout << "Vvedite y: ";
    cin >> y;
 
    //result = pow((1 - tan(x * M_PI / 180)), cos(x * M_PI / 180) / sin(x * M_PI / 180)) + cos((x - y) * M_PI / 180);
    result = pow((1 - tan(x * PI / 180)), cos(x * PI / 180) / sin(x * PI / 180)) + cos((x - y) * PI / 180);
 
    cout << "Result: " << result;
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2017, 20:23
Ответы с готовыми решениями:

Не срабатывает #define
Почему не срабатывает #define и как исправить ? #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include...

Как реализовать директиву #define для создания шаблона отпределения #define ?
Здравствуйте уважаемые. При написании программы появилась необходимость задать шаблон создания...

Скрытие столбцов. Ошибка App-define od obj-define error
Привет) помогите, пожалуйста, ответить на следующие вопросы: 1) выскакивает ошибка: App-define...

Запрос срабатывает в SQL Server, но не корректно срабатывает в Visual Studio 2017
(SELECT ROW_NUMBER() over (ORDER BY AVG(Отметки.Отметка) DESC) ID, .ФИО, .Группа, Отметки.,...

5
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
09.07.2017, 20:33 2
Наверное, M_PI объявлен как 3.14159265358979323846
Полагаю, проблема в двочном представлении чисел с плавающей точкой
Но более точно не скажу
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
09.07.2017, 20:39 3
Лучший ответ Сообщение было отмечено stalkerybr как решение

Решение

а так?
C++
1
const double PI = 3.1415926535897932384626433832795;
1
0 / 0 / 0
Регистрация: 09.07.2017
Сообщений: 8
09.07.2017, 20:47  [ТС] 4
Цитата Сообщение от Antikl Посмотреть сообщение
а так?
C++Выделить код
1
const double PI = 3.1415926535897932384626433832795;
Так хорошо срабатывает. Остался вопрос, почему #define не работает
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
09.07.2017, 20:51 5
Цитата Сообщение от stalkerybr Посмотреть сообщение
не работает
а так?
C++
1
#define PI 3.14
1
0 / 0 / 0
Регистрация: 09.07.2017
Сообщений: 8
09.07.2017, 20:59  [ТС] 6
Цитата Сообщение от Antikl Посмотреть сообщение
а так?
C++Выделить код
1
#define PI 3.14
Так вообще выдало 1.00079, т.е. еще и точность выше стала

Добавлено через 6 минут
Неправильно выразился, точность наоборот снизилась, т.к. точек после запятой меньше стало, но по крайней мере срабатывает. Видимо есть определенный лимит у #define по знакам после запятой?

Добавлено через 16 секунд
Неправильно выразился, точность наоборот снизилась, т.к. точек после запятой меньше стало, но по крайней мере срабатывает. Видимо есть определенный лимит у #define по знакам после запятой?
0
09.07.2017, 20:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2017, 20:59
Помогаю со студенческими работами здесь

Таймер срабатывает раньше времени или вообще не срабатывает
Помогите, пожалуйста, разобраться, что нетак с таймером. Браузер Chrome При создании записи,...

#define c ::
Подскажите как реализовать такую замену: #define sa2::sys::getClientKernel()-&gt;getXDBTManager()...

#define
Здравствуйте, дорогие программисты! сразу хочу сказать, что в С++ я совсем недавно, поэтому...

define не
Здравствуйте. &quot;Дефайню&quot; &quot;%f&quot; для вывода: #define fss &quot;%f&quot;; . И потом делаю вывод вот такой вот:...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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