Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2010, 02:17   #1
Гладиолус
Пользователь
 
Регистрация: 20.12.2009
Сообщений: 10
По умолчанию последовательность синусов

дана последовательность синусов,которую надо вычислить, и число N, от которого она зависит, N-любое натуральное число.

подскажите что у меня не так, вроде все просчитал, ошибка возникает при подсчете числителя, при N>=3.
заодно почитал результат для первых n=1,2,3:
1,1884
1,269
1,1213

кому интересно глянуть на последовательность, так она во вложении.




Код:
#include<iostream.h>
#include <math.h>
#include <conio.h>
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
long double  S=0,ch=0,zn=0;
int n;
cout<<"vvedite N:";
cin>>n;
S=1/sin(1);
cout<<n%2<<"\n";
for(int i=2; i<=n; i++)
{
        if(n%2)  {  ch=ch+sin(((i+1) /2) *i);  cout<<"\n"<<ch<<"\n"; }//здесь считается числитель
        else {  ch=ch+sin((i*i/2) + (i/2));  }// cout<<ch<<"\n";  }//и здесь)) пришлось считать его отдельно для четных и нечетных n
        for(int k=1;k<=n;k++) //считается знаменатель
        {
                zn=zn+sin(k);
                //cout<<zn<<"\n";
        }
        S=S+(ch/zn);
}
cout<<"\n"<<S;
getch();
        return 0;
}
Изображения
Тип файла: jpg img038.jpg (17.6 Кб, 66 просмотров)
Гладиолус вне форума Ответить с цитированием
Старый 25.05.2010, 07:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ошибка возникает при подсчете числителя
Я твою прогу запустил (с некоторой модификацией у меня ибо VS2010), ввел 5 получил:
Цитата:
vvedite N:5
1

0.909297

0.629882

1.61924

2.26953

14.4226
Для продолжения нажмите любую клавишу . . .
В чем ошибка то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.05.2010, 11:25   #3
Гладиолус
Пользователь
 
Регистрация: 20.12.2009
Сообщений: 10
По умолчанию

я не знаю, насчет n=5(не рассчитывал), но при n=3 он выдает 1.83549, вместо положенных 1,1213...короч в числителеле при3 радианах должно получаться отрицательное число, а получается ваще левое и положителное..
Гладиолус вне форума Ответить с цитированием
Старый 25.05.2010, 11:41   #4
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

Если я ничего не напутала, то мне кажется ошибка в логике программы, а именно при подсчете второго члена последовательности числитель второй, а знаменатель первый и т.д.???(k должно начинаться с 2 тоже...)
Ol'ga_new вне форума Ответить с цитированием
Старый 25.05.2010, 11:42   #5
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

И ещё в начале присвоить zn=sin1
Ol'ga_new вне форума Ответить с цитированием
Старый 25.05.2010, 11:47   #6
Гладиолус
Пользователь
 
Регистрация: 20.12.2009
Сообщений: 10
По умолчанию

при посчете N=2 все правильно, можешь откомпилировать и проверить(в 1 посте указаны значения которые должны получаться) да и считал я знаменатель, все там правильно как минимум до 4 члена..(((
Гладиолус вне форума Ответить с цитированием
Старый 25.05.2010, 11:53   #7
Гладиолус
Пользователь
 
Регистрация: 20.12.2009
Сообщений: 10
По умолчанию

Ol'ga_new, вот здесь код, который дал мне одногрупник, походу он сделал как ты сказала...но прикопиляции выдает: 13.5946 при n=2, сам не пойму почему так, проверьте кто нить, мб у меня компилятор навернулся?)

Код:
#include<iostream.h>
#include<math.h>
#include<conio.h>

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
 double ch=0,zn,S;
 int sinarg=1,N;
 cout<<"vvedite N:";
 cin>>N;
 zn=sin(1);
 S=1/zn;
 cout<<S<<endl;
 for(int i=2;i<=N;i++)
{
        zn=zn+sin(i);
        sinarg=sinarg+i;
        ch=sin(sinarg);
        cout<<S<<endl;
        S=S+(zn/ch);
        cout<<S<<endl;
}
 cout<<S;
 getch();
        return 0;
}
Гладиолус вне форума Ответить с цитированием
Старый 25.05.2010, 12:07   #8
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

У него ошибка: zn/ch, а надо: ch/zn!(синус суммы на сумму синусов)
Ol'ga_new вне форума Ответить с цитированием
Старый 25.05.2010, 12:18   #9
Гладиолус
Пользователь
 
Регистрация: 20.12.2009
Сообщений: 10
По умолчанию

точно, блин)))) спасибо
Гладиолус вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
суммa синусов в Delphi!!! Владимир_король Помощь студентам 2 29.04.2010 09:30
Последовательность zasqzasq Помощь студентам 6 24.04.2010 17:22
последовательность zhenya.ya Помощь студентам 1 14.03.2010 22:48
Последовательность CrazyRabbit Помощь студентам 14 08.02.2009 17:22
последовательность pakusya Помощь студентам 1 17.10.2008 17:33