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

При подсчёте косинуса компилятор выдаёт неверное значение - C++

Восстановить пароль Регистрация
 
Gothic Angelos
 Аватар для Gothic Angelos
1 / 1 / 0
Регистрация: 29.05.2010
Сообщений: 140
15.03.2011, 21:40     При подсчёте косинуса компилятор выдаёт неверное значение #1
И снова здравствуйте,возникла очередная проблема в моей программе,при элементарном подсчёте косинуса компилятор выдаёт неверное значение,даю весь код чтобы не спрашивали,что и откуда берётся....проблема в последней функции в извлечении косинуса

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include<iostream.h>
#include<math.h>
#include<conio.h>
float a[3][2]={-0.3,0.1,-0.1,0.2,0.3,-0.1};
float x1[3]={0.7,0.6,-0.4};
 
float modul (float x1[3],float X);
float klaster1 (float a[3][2]);
float klaster2 (float a[3][2]);
 
float kos(float x1[3], float a[3][2],float X,float A);
void main()
{
clrscr ();
float X1,X,A,B,c,C;
X=modul (x1,X);
A=klaster1(a);
B=klaster2(a);
 
kos(x1,a,X,A);
getch();
}
 
float  modul ( float x1[3],float X)
{
float X1;
for (int i=0;i<3;i++)
 
X=pow(X1+=pow(x1[i],2),0.5);
 
 
cout<<X<<" "<<"modul of vector"<<endl;;
return X;
 
}
 
float klaster1 (float a[3][2])
{
float a1,A;
 
for(int j=0;j<3;j++)
 
A=pow(a1+=pow(a[j][0],2),0.5);
 
cout<<A<<" "<<endl;
return A;
}
float klaster2 (float a[3][2])
{
float b,B;
for (int j=0;j<3;j++)
 
B=pow(b+=pow(a[j][1],2),0.5);
 
cout<<B<<" "<<endl;
return B;
}
 
 
float kos(float x1[3], float a[3][2],float X,float A)
{
float c,C,C1,D;
for (int j=0; j<3;j++)
{
c+=x1[j]*a[j][0];
}
//cout<<c<<" ";
C=c/(X*A);
cout<<C<<" "<<endl;
D=cos(C);
cout<<D<<" "<<endl;
return D;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 21:40     При подсчёте косинуса компилятор выдаёт неверное значение
Посмотрите здесь:

Компилятор выдаёт ошибку, в чем дело?? C++
C++ Компилятор выдаёт ошибку
C++ Почему при подсчёте min -выдаёт 0 из списка?
Компилятор выдаёт ошибку: неразрешенный вид '_main C++
Работа с классами, компилятор выдаёт ошибку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
15.03.2011, 21:45     При подсчёте косинуса компилятор выдаёт неверное значение #2
А всё-таки... в чем ошибка? Чему равно C при ошибке и какой результат в D?

Проверьте в каких единицах передаете аргумент к функции cos. Скорее всего ошибка где-то в другом месте.
Gothic Angelos
 Аватар для Gothic Angelos
1 / 1 / 0
Регистрация: 29.05.2010
Сообщений: 140
15.03.2011, 21:55  [ТС]     При подсчёте косинуса компилятор выдаёт неверное значение #3
Все переменные проверил они правильные,а от подсчёта косинуса жду совершенно другой результат,на всех калькуляторах проверил,должно быть другое число,но мой компилятор настойчиво утверждает другое(

Добавлено через 7 минут
Кажется понял в чём ошибка...а можно как-то заставить компилятор считать в градусах,а не радианах?
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
15.03.2011, 21:58     При подсчёте косинуса компилятор выдаёт неверное значение #4
Не хотите смотреть значицца
Смотрим в отладчике С = - 0,890281
после выполнения D = cos(C);
получаем D = 0,6291936
Естественно мы помним, что все аргументы в радианах, а не в градусах.
Поэтому берем калькулятор и считаем cos( -0,890281 ) в радианах и получаем
0,62919364456601410768730021309207
Похоже?

C
1
2
rad = grad * PI / 180;
grad = rad * 180 / PI
Gothic Angelos
 Аватар для Gothic Angelos
1 / 1 / 0
Регистрация: 29.05.2010
Сообщений: 140
15.03.2011, 22:02  [ТС]     При подсчёте косинуса компилятор выдаёт неверное значение #5
Спасибо,я уже сам дошёл))) сглупил,что позабыл о радианах...у меня потом ещё будет 9 векторов и все переводить??? может можно как-то "заставить"компилятор считать в градусах)
IrineK
Заблокирован
15.03.2011, 22:46     При подсчёте косинуса компилятор выдаёт неверное значение #6
Цитата Сообщение от Gothic Angelos Посмотреть сообщение
...у меня потом ещё будет 9 векторов и все переводить??? может можно как-то "заставить"компилятор считать в градусах)
Компилятору будет легче перевести 9 векторов.
Yandex
Объявления
15.03.2011, 22:46     При подсчёте косинуса компилятор выдаёт неверное значение
Ответ Создать тему
Опции темы

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