首页 > 其他 > 详细

PTA 实验6-1 近似求PI (15point(s)) Easy only once *关于le的问题和指数输入的问题,没怎么见过

时间:2020-02-25 13:55:30      阅读:135      评论:0      收藏:0      [点我收藏+]

基本思想:

按照公式逐项求和,最后对比给出的误差范围,确定求到第几步,是机试的一个典型题目;

 

关键点:

卡在了怎么输入指数浮点数的问题上,第一次件scanf("%le")中的le规格;

使用cin>>或者scanf("%le")其实都是可以输入1E-5作为浮点存储;

但是当时看内存踩坑里了,误以为1.000001大于1,其实就是0.000001,只不过是存储方式不同而已;

具体问题比较复杂,涉及到浮点存储,这里不深究,以后有缘再说吧,也算开开眼;

 

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

double jc(double x) {
    double sum = x;
    x--;
    while (x > 1) {
        sum *= x;
        x--;
    }
    return sum;
}

double fmcnt(double x) {
    double sum = 1;
    for (int i = 0; i < x; i++) {
        int now = 3 + i * 2;
        sum *= (double)now;
    }
    return sum;
}

void change(double eps) {
    double temp = 1;
    double sum = 0;
    double index = 1;//项的枚举
    //cout << temp - eps << endl;
    while (temp >= eps) {
        sum += temp;
        double fz = jc(index);
        double fm = fmcnt(index);
        temp = fz / fm;
        index++;
        //cout << temp << endl;
    }
    sum += temp;
    printf("PI = %.5lf\n", sum * 2);
}


int main() {
    double eps;
    //cin >> eps;
    scanf("%le", &eps);
    //cout << eps << endl;
    //eps -= 1;
    //cout << jc(4) << endl;
    change(eps);
    return 0;
}

 

PTA 实验6-1 近似求PI (15point(s)) Easy only once *关于le的问题和指数输入的问题,没怎么见过

原文:https://www.cnblogs.com/songlinxuan/p/12360691.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!