2014-02-12 118 views
0

我正在尝试输入x的值和n的值来计算术语的数量,以便使用泰勒级数和另一个级数来查找自然对数。问题在于我的输出没有显示出来,只是在输入值时显示空格。请帮忙!C代码不会打印出答案?

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

int main(int argc, char **argv){ 

    double x = atof(argv[1]); 
    double i; 
    double y; 
    double result2; 
    double result; 
    double error1; 
    double error2; 
    double sum; 
    int n = atof(argv[2]); 

    if(x <= 0){ 
     printf("Invalid argument\n"); 
     exit (1); 
    } 

    if(abs(x-1) <= 1 && abs(x-1) !=0){ 
     for (i = 1; i <= 1; i++){ 
      result -= pow((x-1), i)/ i; 
     } 
    }  
    else{ 
     for(i =1; i <=n; i--){ 
      result += 1/(i * pow((y),i)); 
     } 
    } 


    for(i = 0; i <=n; i+=2){ 

     y = (x-1)/(x+1); 
     sum += pow((y),i) * (1/(1+i)); 
     result2 = sum * 2 * y; 
    } 


    error1 = result - log(x); 
    error2 = result2 - log(x); 

    printf("Taylor series: ln(%lf) ~= %lf\n", x, result); 
    printf(" Error: %lf\n", error1); 
    printf("Other series: ln(%lf) ~= %lf\n", x, result2); 
    printf(" Error: %lf\n", error2); 

    return 0; 

} 
+1

n应该被声明为double,或者使用atoi() – dckuehn

+0

'y','result','sum'未初始化。 – BLUEPIXY

+0

似乎毫无希望,你知道你在做什么吗?尝试添加评论。 – Wolf

回答

2

您正在使用y而不进行初始化。在程序中使用它之前首先进行初始化。特别是这一行

result += 1/(i * pow((y),i)); 

将尝试使用y时,它是空的。

而且循环

for (i = 1; i <= 1; i++) 

,因为它是迭代只有一次是不是有效。