为什么我得到结果= 0.00000

时间:2014-11-05 14:08:12

标签: c variables

我正在尝试计算罪和cos而不使用数学库与泰勒系列女巫是 sinx =Σn= 0到n =∞(-1)^ n * x ^(2n + 1)/(2n + 1)!
这个代码产生的输入是什么对于这个代码中的问题,cos为1,00000的0,00000

#include <stdio.h>
#include <stdlib.h>

double fakt(int);
double power(int,int);
int negative_positive(int);
double calculate_sin(int,int);
double calculate_cos(int,int);
double calculate_radyan(int);

int main() {
    int degree,number;
    char command;
    do{
        scanf("%c",&command);
        if(command=='d' || command=='D'){
            scanf("%d %d",&degree,&number);
            double radyan = calculate_radyan(degree);
            printf("%lf \n%lf ",calculate_sin(radyan,number),calculate_cos(radyan,number));
        }
    }while(command!='e' && command!='E');

    return 0;
}

double fakt(int n){
    int i;
    double result=1;
    for(i=1;i<n;i++)
        result = result*i;

    return result;
}

double power(int base, int exponent){
    int i;
    double result=1;
    for(i=0;i<exponent;i++)
        result = result*base;

    return result;
}

int negative_positive(int number){
    if(number % 2 == 0)
        return 1;
    else
        return -1;
}

double calculate_sin(int degree , int n){
    int i;
    double result=0;
    double tmp=0;
    for(i=0;i<n;i++){
        tmp=negative_positive(i)*power(degree,2*i+1)/fakt(2*i+1);
        result=tmp+result;}
    return result;
}

double calculate_cos(int degree , int n){
    int i;
    double result=0;
    double tmp=0;
    for(i=0;i<n;i++)
    {
        tmp=negative_positive(i)*power(degree,i*2)/fakt(2*i);
        result=tmp+result;
    }

    return result;
}

double calculate_radyan(int degree){
    double result,pi=3.14159;
    result =pi/180*degree;

    return result;
}

1 个答案:

答案 0 :(得分:1)

ı将回答我自己的问题,但我找到了解决方案。当程序尝试使用双radyan变量转换为power方法时,它将该变量转换为0导致该方法只取整数变量幂(double base,int exponent)解决了我的问题