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

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

Войти
Регистрация
Восстановить пароль
 
Levondk
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 11
#1

Вычисление sin. Подкорректировать код. - C++

21.12.2012, 22:56. Просмотров 429. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include "conio.h"
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
const int Maximum=450;
void main()
{
        int k=1,kk=1;
        double x;
        cin>>x;
        long double Function=x,Summ=Function;
        for(int i=1;i<=Maximum;i++)
        {
                Function *= -1*x*x/((2*i)*(2*i+1));
                Summ+=Function;
        }
        cout<<setprecision(60)<<Summ;
        getch();
}
Эта программа должна считать синус Х, когда вводим Х. Вообще требуется, чтобы после запятой было 100 символов (моя прога считает 20 и еще 21 нулей почему-то), для этого нужно ввести массивы. Нашел тут что-то типа этого (действия в столбик) : http://acm.mipt.ru/twiki/bin/view/Al...ArithmeticsCPP , но не знаю, как внедрить массивы в мою программу.. Может кто-то может внедрить, чтобы после запятой были больше или ровно 100 символов, но не меньше.. И главное, чтобы в программе кроме iostream , math.h , iomanip, string ничего не использовалось..насколько это возможно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2012, 22:56     Вычисление sin. Подкорректировать код.
Посмотрите здесь:

C++ Можете немного подкорректировать код?
C++ Вычисление sin, cos, tg, ctg
C++ Сортировка 2-х последовательностей в новую без создания массива(нужно подкорректировать код)
C++ Вычисление sin(x)/x
C++ вычисление sin
подкорректировать код (найти ошибки) C++
подкорректировать код(логин и пароль) C++
Подкорректировать код нахождения суммы ряда C++
C++ В файл записывается мусор. Подкорректировать код
Подкорректировать код (сортировка распределением) C++
C++ Подскажите как написать в С++: Вывести «столбиком» значения sin 0,l, sin 0,2, ., sin l,l
Рекурсивное вычисление x!-sin(x) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
radamaerl
27 / 6 / 1
Регистрация: 20.12.2012
Сообщений: 39
22.12.2012, 00:16     Вычисление sin. Подкорректировать код. #2
вообще то через ряд считается с заданной точностью эпсилон
чего именно 450 членов ряда считать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void main()
{
        int k=1,kk=1;
        double x;
        cin>>x;
        long double Function=0,Summ=0;
double eps;
cin>>eps;
while(fabs(Function)>eps) 
{
 
 
}
        for(int i=1;i<=Maximum;i++)
        {
                Function *= -1*x*x/((2*i)*(2*i+1));
                Summ+=Function;
        }
        cout<<setprecision(60)<<Summ;
        getch();
}
Добавлено через 14 минут
пардон не то
глюки сайта
Mun
7 / 7 / 7
Регистрация: 21.12.2012
Сообщений: 46
22.12.2012, 00:16     Вычисление sin. Подкорректировать код. #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <math.h>
#include<iomanip>
using namespace std;
 
main()
{
    setlocale(0,"");
   long double x, y;
    cout << "Введите x: ";
    cin >> x;
    y=sin(x);
    cout << setprecision(110) << y;
    return 0;
}


Не знаю чем не понравился более удобный метод.
radamaerl
27 / 6 / 1
Регистрация: 20.12.2012
Сообщений: 39
22.12.2012, 00:20     Вычисление sin. Подкорректировать код. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void main()
{
   int i=1;
   double x;
   cin>>x;
   long double Function=x,Summ=0;
   double eps;
   cin>>eps;
   while(fabs(Function)>eps)
   {
      Summ+=Function;
      Function *= -1*x*x/((2*i)*(2*i+1));
      i++;
   }
   cout<<setprecision(60)<<Summ;
   getch();
}
Levondk
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 11
22.12.2012, 16:52  [ТС]     Вычисление sin. Подкорректировать код. #5
Цитата Сообщение от Mun Посмотреть сообщение
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <math.h>
#include<iomanip>
using namespace std;
 
main()
{
    setlocale(0,"");
   long double x, y;
    cout << "Введите x: ";
    cin >> x;
    y=sin(x);
    cout << setprecision(110) << y;
    return 0;
}


Не знаю чем не понравился более удобный метод.

Вот что делает ваша программа. (2 скрина )http://data1.floomby.com/files/share...ck2CMULBxg.png и http://data1.floomby.com/files/share...WjveiWDLAw.png
И не понятно, зачем столько нулей? вот если бы вместо нулей была бы точность.. Да и в моей программе использованы библиотеки, которых нельзя использовать.. Можно только iostream , math.h , iomanip, string и может еще 1-2, которых я забыл.

Добавлено через 2 минуты
Цитата Сообщение от radamaerl Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void main()
{
   int i=1;
   double x;
   cin>>x;
   long double Function=x,Summ=0;
   double eps;
   cin>>eps;
   while(fabs(Function)>eps)
   {
      Summ+=Function;
      Function *= -1*x*x/((2*i)*(2*i+1));
      i++;
   }
   cout<<setprecision(60)<<Summ;
   getch();
}
вот с этим проблемы.
C++
1
while(fabs(Function)>eps)
Что такое fabs ? и еще, зачем эпсилион, если нужно высчитать синус какого-то угла с точностью 100 (предположим).

Добавлено через 6 минут
еще раз пересмотрел вашу программу..
Цитата Сообщение от Mun Посмотреть сообщение
y=sin(x);
Так вся идея в том, что я должен синус считать, а не функция из библиотеки... И если вы использовали какую-то функцию из библиотеки, то хорошо бы его вытащить в сам файл cpp , чтобы всё на виду было.

Добавлено через 12 минут
radamaerl, И еще проверил, эпсилион вообще тут бессмысленно вводить, ваша программа работает так же, как и предыдущая (без эпсилиона там), с огромным количество нулей... мне нужно точность 100, а он делает точность 20 и еще 20 нулей. Поэтому мне и нужно в массивы записывать чилса, чтобы без проблем большие числа хранились..но как потом эти массивы внедрить в программу...?

Добавлено через 15 часов 35 минут
Тема всё еще актуальна((жду экспертов..
radamaerl
27 / 6 / 1
Регистрация: 20.12.2012
Сообщений: 39
22.12.2012, 23:59     Вычисление sin. Подкорректировать код. #6
есть понятие вычисление суммы бесконечного ряда с заданной точностью эпсилон
эпсилон соответственно маленький должен быть чтобы точнее было
я тебе написал функцию вычисления твоей функции через ряд с заданной точностью эпсилон
в твоем понимании точность 100 это 100 знаков после запятой
если тебе надо вывести сто знаков после запятой на тебе пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <iomanip>
#include <math.h>
#include <stdlib.h>
 
using namespace std;
int main()
{
   
  double i=1;
  cout << setiosflags(ios::fixed) << setprecision(100)<<sin(i);
  
   system("pause");
}
дальше сам
Yandex
Объявления
22.12.2012, 23:59     Вычисление sin. Подкорректировать код.
Ответ Создать тему
Опции темы

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