что-то не так, не могу найти ошибку. вычисляет только для единицы. (задача с погрешностью)
Код:
#include <iostream>
#include <clocale>
#include <math.h>
using namespace std;
int main ()
{
setlocale(LC_ALL, "Russian");
int x,n;
float eps;
cout << " Введите x "<<endl;
cin >> x;
cout << " Введите n "<<endl;
cin >> n;
cout <<"введи точность \n"<<endl;
float s=0,t=0,f=1;
for (int i=0;i<n;i++)
{
f=1;
cin >>eps;
float sum=0;
for (int i=0;i<n;i++)
{
f=1;
for(int j=1; j<i*2+1; j++)
if (j%2!=0) f=f*j;
else f=f/j;
t = (pow ((float)x,i*2+1) / (i*2+1))*f;
if (fabs(t)<eps/2) sum=t;
s=s+t;
}
}
cout << " Сумма n элементов = "<< s << endl;
cout << " arcsin(x) = "<< asin((float)x) << endl;
return 0;
}
#include <clocale>
#include <math.h>
using namespace std;
int main ()
{
setlocale(LC_ALL, "Russian");
int x,n;
float eps;
cout << " Введите x "<<endl;
cin >> x;
cout << " Введите n "<<endl;
cin >> n;
cout <<"введи точность \n"<<endl;
float s=0,t=0,f=1;
for (int i=0;i<n;i++)
{
f=1;
cin >>eps;
float sum=0;
for (int i=0;i<n;i++)
{
f=1;
for(int j=1; j<i*2+1; j++)
if (j%2!=0) f=f*j;
else f=f/j;
t = (pow ((float)x,i*2+1) / (i*2+1))*f;
if (fabs(t)<eps/2) sum=t;
s=s+t;
}
}
cout << " Сумма n элементов = "<< s << endl;
cout << " arcsin(x) = "<< asin((float)x) << endl;
return 0;
}
a) сумму N слагаемых заданного вида;
b) сумму тех слагаемых, которые по абсолютной величине больше Е.
Для случая b выполнить суммирование для двух значений Е, отличающихся на порядок, и при этом определить количество слагаемых, включенных в сумму. Сравнить результаты с точным значением функции, для которой данная сумма определяет приближенное значение при x, лежащем в интервале (-R, R).
#include <iostream>
#include <clocale>
#include <math.h>
using namespace std;
int main ()
{
setlocale(LC_ALL, "Russian");
int x,n;
float eps;
cout << " Введите x "<<endl;
cin >> x;
cout << " Введите n "<<endl;
cin >> n;
cout <<"введи точность \n"<<endl;
float s=0,t=0,f=1;
for (int i=0;i<n;i++)
{
f=1;
cin >>eps;
float sum=0;
for (int i=0;i<n;i++)
{
f=1;
for(int j=1; j<i*2+1; j++)
if (j%2!=0) f=f*j;
else f=f/j;
t = (pow ((float)x,i*2+1) / (i*2+1))*f;
if (fabs(t)<eps/2) sum=t;
s=s+t;
}
}
cout << " Сумма n элементов = "<< s << endl;
cout << " arcsin(x) = "<< asin((float)x) << endl;
return 0;
}
Да и не старайтесь сокращать код.
Код:
int n;
float x,eps;
float x,eps;
В логику даже не пытался вникнуть.
На будущее совет: расставляйте скобочки! Ваш код абсолютно нечитаемый и это ещё мягко сказано.
Вот для примера:
Код:
for(int j=1; j<i*2+1; j++){
if(j%2!=0){
f=f*j;
}else{
f=f/j;
t = (pow (float(x),i*2+1) / (i*2+1))*f;
}
if (fabs(t)<eps/2){
//sum=t;
s=s+t;
}
}
if(j%2!=0){
f=f*j;
}else{
f=f/j;
t = (pow (float(x),i*2+1) / (i*2+1))*f;
}
if (fabs(t)<eps/2){
//sum=t;
s=s+t;
}
}