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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gothic Angelos
1 / 1 / 0
Регистрация: 29.05.2010
Сообщений: 140
#1

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

15.03.2011, 21:40. Просмотров 584. Ответов 5
Метки нет (Все метки)

И снова здравствуйте,возникла очередная проблема в моей программе,при элементарном подсчёте косинуса компилятор выдаёт неверное значение,даю весь код чтобы не спрашивали,что и откуда берётся....проблема в последней функции в извлечении косинуса

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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 21:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При подсчёте косинуса компилятор выдаёт неверное значение (C++):

Почему при подсчёте min -выдаёт 0 из списка? - C++
Не пойму Почему при подсчёте min -выдаёт 0 из списка? При max всё нормально ... :( #include &lt;stdio.h&gt; #include &lt;iostream&gt; ...

При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std; long Fact(short m)// функция вычисления факториала ...

Неверное значение при умножении больших чисел - C++
Добрый день, столкнулся с такой вещью: Понадобилось умножить 30000*30000*30000, проверил через диапазоны типов данных, long long...

Неверное значение при передаче параметра в метод operator= - C++
Здравствуйте. Есть код vector.h #pragma once //#include &quot;vector.h&quot;

Неверное выводимое значение при смене беззнаковой переменной на знаковую - C++
Вот задача: На спутнике «Фотон» установлен прибор, предназначенный для измерения энергии космических лучей. Каждую минуту прибор...

Компилятор выдаёт ошибку - C++
Я новичок в C++ и не могу понять в чём ошибка написал вот такой код: #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
15.03.2011, 21:45 #2
А всё-таки... в чем ошибка? Чему равно C при ошибке и какой результат в D?

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

Добавлено через 7 минут
Кажется понял в чём ошибка...а можно как-то заставить компилятор считать в градусах,а не радианах?
0
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
1
Gothic Angelos
1 / 1 / 0
Регистрация: 29.05.2010
Сообщений: 140
15.03.2011, 22:02  [ТС] #5
Спасибо,я уже сам дошёл))) сглупил,что позабыл о радианах...у меня потом ещё будет 9 векторов и все переводить??? может можно как-то "заставить"компилятор считать в градусах)
0
IrineK
Заблокирован
15.03.2011, 22:46 #6
Цитата Сообщение от Gothic Angelos Посмотреть сообщение
...у меня потом ещё будет 9 векторов и все переводить??? может можно как-то "заставить"компилятор считать в градусах)
Компилятору будет легче перевести 9 векторов.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2011, 22:46
Привет! Вот еще темы с ответами:

Почему компилятор выдаёт ошибки? - C++
Почему компилятор выдаёт ошибки? #include &lt;iostream.h&gt; #include &lt;conio.h&gt; Void main () { int a, b, c; std::cin &gt;&gt; a &gt;&gt; b...

Работа с классами, компилятор выдаёт ошибку - C++
Дан следующий базовый класс: class area_cl { public: double height; double width; }; создайте два производных...

Компилятор выдаёт ошибку, в чем дело?? - C++
Задание: 1. Определить иерархию классов (в соответствии с вариантом). Базовый класс должен включать обязательный атрибут char *name. 2....

Компилятор выдаёт ошибку: неразрешенный вид '_main - C++
#include &lt;vcl.h&gt; #include &lt;iostream.h&gt; using namespace std; class CClass { protected: double a; int b; public: ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.03.2011, 22:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru