Главная » 2015 » Ноябрь » 17 » new решение задачи из методички R
09:13
new решение задачи из методички R

#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL,"rus_rus.1251");
    double x,s,chisl,znam,a,E;
    int n,m,i,znak,k;
    const double pi=3.1415926535897;

    cout<<"Введите x -> "; cin >>x;
    cout<<"Введите n -> "; cin >>n;
    cout<<"Введите E -> "; cin >>E;
    
    while (x>2*pi)
    {
        x=x-2*pi;
    }
    while (x<0)
    {
        x=x+2*pi;
    }
    cout<<"new x= "<<x<<endl;

    if (x==0)
    {
        cout <<"По первому замечатльному пределу = 1"<<endl;
        goto exit;
    }
    // первый этап
    s=0;
    chisl=1;
    znam=1;
    k=1;
    znak=1;
    for(i=1;i<=n;i++)
    {
        a=znak*(chisl/znam);
        s+=a;
        chisl*=x*x;
        k+=2;
        znam*=(k-1)*k;
        znak*=(-1);
    }
    cout <<"1. s1= "<<s<<endl;

    // второй этап
    s=0;
    chisl=1;
    znam=1;
    k=1;
    znak=1;
    a=1;
    m=0;
    while (abs(a)>E)
    {
        a=znak*(chisl/znam);
        s+=a;
        chisl*=x*x;
        k+=2;
        znam*=(k-1)*k;
        znak*=(-1);
        m++;
    }
    cout <<"2. s2= "<<s<<endl;
    cout <<"    m= "<<m<<endl;
    cout <<"    E= "<<E<<endl;
    
    // третий этап
    E/=10;
    s=0;
    chisl=1;
    znam=1;
    k=1;
    znak=1;
    a=1;
    m=0;
    while (abs(a)>E)
    {
        a=znak*(chisl/znam);
        s+=a;
        chisl*=x*x;
        k+=2;
        znam*=(k-1)*k;
        znak*=(-1);
        m++;
    }
    cout <<"3. s3= "<<s<<endl;
    cout <<"    m= "<<m<<endl;
    cout <<"    E= "<<E<<endl;

    // точное значение
    cout<<"4. Точное значение= "<<sin(x)/x<<endl;

exit:    
    system("pause");
    return 0;
}

Просмотров: 366 | Добавил: denjes | Рейтинг: 0.0/0
Всего комментариев: 0
avatar