4 / 4 / 1
Регистрация: 17.12.2015
Сообщений: 119
1

Неправильные результаты математических функций

10.09.2016, 23:53. Показов 889. Ответов 6
Метки нет (Все метки)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
int main()
{
    //const float PI = 3.14;
    float a = 1;
    double result1 = 0, result2 = 0; //z1 ,z2
    float x;
 
    result1 = (sin(4*a)/(1+cos(4*a)))*(cos(2*a)/(1+cos(2*a)));
 
    x = ((3/2)*3.14) - a;
    result2 = cos(x)/sin(x);
 
    printf(" Result 1 = %f \n Result 2 = %f \n\n", result1, result2);
 
 
    return 0;
}
В консоль выводится:
Result 1 = 1.557408
Result 2 = -0.639846

Если верить этому калькулятору - http://live.mephist.ru/show/calc/help/trig , результаты должны быть почти одинаковые

Что я делаю не так ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2016, 23:53
Ответы с готовыми решениями:

Написание собственных математических функций
Izmenite zadanie tak, chtoby dlja Summy, Raznosti, Delenija i Umnozhenija byli napisany...

Составить алгебраические выражения с помощью стандартных математических функций языка
Помогите решить задачу, если не трудно, пожалуйста) &quot;Для приведенных ниже вариантов необходимо...

Программа выводит неправильные результаты
program d; uses crt; var a:array of integer; s:real; i,n,k: integer; begin randomize;...

Неправильные результаты вычислений. Как исправить?
Есть такой код. Он компилится, пытается вычислять и записывает решение в другой файл. Однако...

6
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
11.09.2016, 00:04 2
Ваш калькулятор говорит "какая-то фигня". Почему вообще результаты должны быть почти одинаковые? Это какие-то формулы?
0
4 / 4 / 1
Регистрация: 17.12.2015
Сообщений: 119
11.09.2016, 00:19  [ТС] 3
Цитата Сообщение от DevAlone Посмотреть сообщение
Почему вообще результаты должны быть почти одинаковые
По условию задачи.

Добавлено через 58 секунд
Цитата Сообщение от DevAlone Посмотреть сообщение
Ваш калькулятор говорит "какая-то фигня"
Калькулятор не знает, что такое a. Если подставить вместо него одинаковые цифры, то получите результат)

Добавлено через 1 минуту
Проблема решилась...почти. Как оказалось, программа считает, что 3/2 = 1.000000, что очень странно. Проблема же решилась заменой 3/2 на 1.5.

Вопрос теперь в том, почему 3/2 = 1.000000 ?
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
11.09.2016, 00:23 4
Лучший ответ Сообщение было отмечено JackLas как решение

Решение

Цитата Сообщение от JackLas Посмотреть сообщение
Вопрос теперь в том, почему 3/2 = 1.000000 ?
Оно равно не 1.0, а 1, потому что 3 и 2 - это литералы типа integer и деление происходит целочисленное. Чтобы результат выражения был double, нужно сделать один из операндов типом double.
1
Диссидент
Эксперт C
26845 / 16750 / 3672
Регистрация: 24.12.2010
Сообщений: 37,499
11.09.2016, 10:08 5
Что случилось с миром? На протяжении суток уже третья такая ошибка. Такой густоты я раньше не замечал.
Сишник, помни! 1/2 = 0
3
4 / 4 / 1
Регистрация: 17.12.2015
Сообщений: 119
11.09.2016, 17:49  [ТС] 6
Блиин, точно. Я же читал об этом. Совсем вылетело из головы. Спасибо)
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
32449 / 17991 / 3765
Регистрация: 12.02.2012
Сообщений: 30,188
Записей в блоге: 5
11.09.2016, 17:51 7
О том, что если считать, что пи=3.14, то останется не более трех верных значащих цифр, я уже не говорю...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2016, 17:51
Помогаю со студенческими работами здесь

Может ли memtest показывать неправильные результаты
Всем привет. Знакомый принес ноутбук. Сказал, что иногда появляются синии экраны. Я стал прогонять...

Решение СЛАУ методом Гаусса. Неправильные результаты
Всем добрый день. Программа неправильно находит корни. Не могу понять почему. Правильные корни:...

Операции с булевыми массивами в классе выполняются, но возвращают неправильные результаты
class set {private: int max; int n; bool *a; public: set(int ms) { n=ms; max=ms;

Использование математических функций и функций работы со строками
Составить процедуру для вычисления и печати значений переменных y и z для заданных значений...


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

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

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