如题
#include <iostream>
#include <cmath>
using namespace std;
class SIN {
private:
int x;
int n;
public:
SIN(int x1, int n1) {
x = x1;
n = n1;
}
int power(int q){
int s = 1;
int i = 1;
for ( i ; i <= q; i++)
{
s = s * i;
}
return s;
}
int mi(int m, int n) {
return pow(m, n);
}
int fun();
void show()
{
cout <<fun() << endl;
}
};
int SIN::fun()
{
int s1=0;
int s;
int i ;
for (i=1; i <= n; i++)
{
s=mi(x, 2*i - 1) / power(2*i - 1);
s1 = s + s1;
}
return s1;
}
int main() {
class SIN text(1, 1);
text.show();
return 0;
}
一些想法,如果fun函数的返回值是int型的话,误差太大了,因此我做了一些修订。
#include <iostream>
#include <cmath>
using namespace std;
class SIN {
private:
int x;
int n;
public:
SIN(int x1, int n1) {
x = x1;
n = n1;
}
int power(int q){
int s = 1;
int i = 1;
for ( i ; i <= q; i++)
{
s = s * i;
}
return s;
}
float mi(int m, int n) {
return pow(m, n);
}
float fun();
void show()
{
cout <<fun() << endl;
}
};
float SIN::fun()
{
float s1=0.00;
float s;
int i ;
for (i=1; i <= n; i++)
{
s=mi(x, 2*i - 1) / power(2*i - 1);
s1 = s + s1;
}
return s1;
}
int main() {
class SIN text(2, 3);
text.show();
return 0;
}
在这个修订里,我修改了s和s1,mi函数的返回值均为float。虽然和题意不符,但是精度更大。
运行图