繁体   English   中英

如何在没有 math.c 的情况下用 C 进行求和?

[英]How do I do a summation in C without math.c?

您好,我需要创建此总和,如果您输入数字 30000,则响应应为 pi 的数量,但是这里的总和不起作用,这是代码。

在此处输入图片说明

#include <stdio.h>  
#include <stdlib.h> 
#include <string.h> 
#include <time.h>   
#include <limits.h> 
#include <ctype.h>  
#include <stdbool.h>

int main( void ){

int num, k;
double pi= 0;

printf("Digite o total de termos >=30000: ");
scanf("%d", &num);
if (num < 30000){
    printf("Erro.");
    
}else {
    for (k = 1; k<= num; k++){
        if (k % 2 == 0){
            pi = (double)(-1)/ (2*k -1);
            
            
        }else{
            pi =  (double)(1)/ (2*k -1);
        
           
        }
        pi = pi * 4;
    }
   
    printf("O valor de pi e %f", pi);
    
    
}



return 0; }

以下是总结的一般方法:

double sum(int from, int to, double (*f)(int)) {
    double ret = 0.0;

    for(int i=from; i<to; i++)
        ret+=f(i);

    return ret;
}

然后你可以写这个函数:

double fun(int current) {
    double sign = current %2 == 0 ? -1.0 : 1.0;
    return sign / (2*current - 1)
}

最后,这样称呼它:

double pi = sum(1, num, fun);

请注意,如果您是正在寻找家庭作业解决方案的初学者,这可能不是一个好方法。

#include <stdio.h>

int main(void) {
    double pi=0;
    
    for(int k=1; k<=3000; ++k)
    {
        pi += (2.*(k%2)-1) / (2*k-1);   // This line does a summation, and uses floating point math (Not Integer Math)
    }
    
    printf("Pi : %f\n", 4*pi);
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM