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

Где ошибка ? - C++

Восстановить пароль Регистрация
 
Dz111
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 85
28.12.2010, 18:57     Где ошибка ? #1
Даны числа x и n . Вычислить
S=sin(x)+sin(sin(x))+.....+sin(sin....sin(x)).
n

Моя программа такая . Но вычисления не правильные .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main ()
{ clrscr();
int i,n;
double s,a,x;
cout<<"Vvedite n and x"<<endl;
cin>>n;
cin>>x;
a=x;
s=0;
for (i=1;i<=n;i++)
{
a=sin(a);
s+=a;
}
cout<<s<<endl;
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2010, 18:57     Где ошибка ?
Посмотрите здесь:

C++ где ошибка
Где ошибка ? C++
где ошибка? C++
C++ Где ОШИБКА?
C++ Где ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abyr
4 / 4 / 1
Регистрация: 23.12.2010
Сообщений: 27
28.12.2010, 19:12     Где ошибка ? #2
вместо
C++
1
a=sin(a);
напиши
C++
1
2
3
4
for (j=1;j<=i;j++)
{
a=sin(a);
}
Dz111
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 85
28.12.2010, 19:16  [ТС]     Где ошибка ? #3
т.е так ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main ()
{ clrscr();
int i,n;
double s,a,x;
cout<<"Vvedite n and x"<<endl;
cin>>n;
cin>>x;
a=x;
s=0;
for (i=1;i<=n;i++)
{
   {a=sin(a);}
s+=a;
}
cout<<s<<endl;
getch();
}
abyr
4 / 4 / 1
Регистрация: 23.12.2010
Сообщений: 27
28.12.2010, 19:20     Где ошибка ? #4
вот так попробуй:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main ()
{ clrscr();
int i,j,n;
double s,a,x;
cout<<"Vvedite n and x"<<endl;
cin>>n;
cin>>x;
a=x;
s=0;
for (i=1;i<=n;i++)
{
for (j=1;j<=i;j++) a=sin(a);
s+=a;
}
cout<<s<<endl;
getch();
}
во. вроде так.
Dz111
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 85
28.12.2010, 19:44  [ТС]     Где ошибка ? #5
Нет ! все равно .
Я на калькуляторе проверяю и все равно !
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.12.2010, 19:46     Где ошибка ? #6
Dz111, Надо перевести в радианы
C++
1
sin(a * M_PI / 180)
, где M_PI - число пи.
abyr
4 / 4 / 1
Регистрация: 23.12.2010
Сообщений: 27
28.12.2010, 20:50     Где ошибка ? #7
не надо. там уже всё в радианах. а вот ТС может в градусах считает на калькуляторе?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
 
int main(int argc, char** argv) {
    float a, b;
    a = sin(3.14);
    b = sin(180);
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    return 0;
}
вот программка выдает:
a = 0.00159265 = 0
b = -0.801153
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.12.2010, 20:55     Где ошибка ? #8
Цитата Сообщение от abyr Посмотреть сообщение
не надо. там уже всё в радианах
Уверены ?
Если написать так
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <cmath>
 
int main()
{
    std::cout << sin(30);
    return 0;
}
результат будет следующий
Код
-0.988032
Process returned 0 (0x0)   execution time : 0.031 s
Press any key to continue.
если же так как я предлагаю
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <cmath>
 
int main()
{
    std::cout << sin(30 * M_PI / 180);
    return 0;
}
Результат
Код
0.5
Process returned 0 (0x0)   execution time : 0.031 s
Press any key to continue.
, что по-моему больше правдиво.
abyr
4 / 4 / 1
Регистрация: 23.12.2010
Сообщений: 27
28.12.2010, 20:59     Где ошибка ? #9
возможно библиотека <math.h> и <cmath> по-разному считают?

ты согласен, что код правильно написан?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.12.2010, 21:02     Где ошибка ? #10
Цитата Сообщение от abyr Посмотреть сообщение
возможно библиотека <math.h> и <cmath> по-разному считают?
Нет, говорю же надо привести до радиан.
abyr
4 / 4 / 1
Регистрация: 23.12.2010
Сообщений: 27
28.12.2010, 21:26     Где ошибка ? #11
ну возьми научный калькулятор и посчитай sin(30[радиан]). он тебе и выдаст -0.988032

Добавлено через 6 минут
ты же сам написал, что sin(30) = -0.988032. так?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.12.2010, 21:32     Где ошибка ? #12
abyr, Ну как тебе еще обяснить, что тригонометричиские функции в C/C++ принимают в качестве параметров значение не в градусах, а в радианах.
abyr
4 / 4 / 1
Регистрация: 23.12.2010
Сообщений: 27
28.12.2010, 21:38     Где ошибка ? #13
я что-то запутался. ты написал
Dz111, Надо перевести в радианы
дак ты из радиан в градусы хочешь переводить? или наоборот?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2010, 21:47     Где ошибка ?
Еще ссылки по теме:

Где ошибка? C++
где ошибка ? C++
C++ Где ошибка? С++

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

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.12.2010, 21:47     Где ошибка ? #14
abyr, В радианы, думаю по этой формуле
C++
1
sin(a * M_PI / 180)
это в самом начале было понятно, незнаю из-за чего это вызвало у тебя такое замешательство.
Yandex
Объявления
28.12.2010, 21:47     Где ошибка ?
Ответ Создать тему
Опции темы

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