Try*_*ram 0 c trigonometry function
该程序将编译,但在运行它时,我没有从我的输入中得到正确的值,我已经找到了一种方法来制作正弦公式并找到了这个,但我不相信它是正确的.
我的配方是否正确?我认为在c中运行sin函数也会给我错误的值.
*如果我输入1.5和4 im得到0.000和一个随机整数,那么这些变化仍会得到错误的值
/*
* Function mySin is using a sin formula to get the sin of x
* the function then returns the sin value computed
* Parameters -for function mySin are "x" is the value for sin
* -"n"is the number of series to run
*
*The program also uses the sin(x) function to get the real sin
*
*/
#include <stdio.h>
#include <math.h>
int mySin(double x, int n){
int i=0;
double sinx=0;
for(i=1; i<=n; i+=2){
sinx=(pow(x,i)+sinx); //
}
return sinx;
}
int main(double sinx){
double realSin=0;
double x=0;
int n=0;
printf("Please input x and n:");
scanf("%lf",&x);
scanf("%d",&n);
mySin(x,n);
realSin=sin(x);
printf("mySin= %f\n sin=%d\n",sinx,realSin);
}
Run Code Online (Sandbox Code Playgroud)
你的mySin功能至少有5种不同的方式.使用**代表求幂(以避免与异或混淆),则正确的分子式是
sin(x) = x - x**3/3! + x**5/5! - x**7/7! + x**9/9! ...
Run Code Online (Sandbox Code Playgroud)
您的实施失败,因为
此外,main还有几种方式是错误的.返回值mySin完全被忽略.相反,它sinx是第一个参数main,它是程序收到的命令行参数的数量(包括它运行的名称).此外,%d用于格式字符串中的所有数字,无论其类型如何,仅用于表示int.
要修复mySin,i只需要超过奇数值,并让循环的每次迭代计算x**i/i!并将其添加到当前值sinx.
要修复main,请声明一个局部sinx变量main并分配sinx = mySin(x, n)而不是声明sinx为参数.此外,%lf用于阅读双打scanf和%f用于写双打printf.
| 归档时间: |
|
| 查看次数: |
2498 次 |
| 最近记录: |