Главная » 2017 » Апрель » 10 » Решение задачи R. Функции и динамический массив
11:19
Решение задачи R. Функции и динамический массив

#include<iostream>
#include <Windows.h>
using namespace std;
void SummaN(double x, int n);
void SummaE(double x,double e);
void vivod(double *a, int n);
int main() 
{
    setlocale(LC_ALL, "Russian"); 
    SetConsoleCP(1251); SetConsoleOutputCP(1251);
    const double pi=3.1415926535;
    double x,e;
    int n;
    cout<<"Введите x "; cin >>x;
    while (x>2*pi) x=x-2*pi;
    while (x<-2*pi) x=x+2*pi;
    cout<<"Введите N "; cin >>n;
    cout<<"Введите E "; cin >>e;

    cout<<"Сумма при N"<<endl;
    SummaN(x,n);
    cout<<"Сумма для E1"<<endl;
    SummaE(x,e);
    cout<<"Сумма для E2"<<endl;
    SummaE(x,e/10);
    //Точное значение
    cout<<"Точное значение sin(x)="<<sin(x)<<endl; 

    system("pause");
    return 0;
}    
void SummaN(double x, int n) 
{
    double *a;
    a=new double [n];
    int k, i, znak;
    double s, chisl, znam;
    chisl=x;
    znam=1;
    s=0;
    znak=1;
    k=2;
    for (i=0;i<n;i++)
    {
        a[i]=chisl/znam*znak;
        s=s+chisl/znam*znak;
        znam=znam*k*(k+1);
        chisl=chisl*x*x;
        znak=znak*(-1);
        k=k+2;
    }
    cout<<"1. sin(x)="<<s<<endl;
    cout<<"Элементы массива"<<endl;
    vivod(a,n);
    delete a;
}    
void SummaE(double x, double e) 
{
    int k, i, znak;
    double s, chisl, znam;
    chisl=x;
    znam=1;
    s=0;
    znak=1;
    k=2;
    i=0;
    while (abs(chisl/znam)>e)
    {
        s=s+chisl/znam*znak;
        znam=znam*k*(k+1);
        chisl=chisl*x*x;
        znak=znak*(-1);
        k=k+2;
        i++;
    }
    cout<<"sin(x)="<<s<<" Количество слагаемых= "<<i<<endl;
}
void vivod(double *a, int n) 
{
    for (int i=0;i<n;i++)
    {
        cout <<a[i]<<" "<<endl;
    }
    cout << endl;
}    

 

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