下面是一个使用C++编写的计算圆周率的代码,它会一直进行计算,每计算出一位就输出一次,并且在关闭程序时将结果存储到文件pi.txt中。

#include <iostream>
#include <fstream>

void calculatePi() {
    std::ofstream file('pi.txt'); // 打开文件

    long double pi = 0.0;
    long double sign = 1.0;
    long double denominator = 1.0;
    long double term = 0.0;
    int i = 0;

    while (true) {
        term = sign / denominator;
        pi += term;
        sign = -sign;
        denominator += 2.0;

        // 每计算出一位就输出
        std::cout << 'Pi: ' << pi * 4 << std::endl;

        // 存储到文件
        file << 'Pi: ' << pi * 4 << std::endl;

        i++;
        if (i % 100000 == 0) {
            file.flush(); // 刷新缓冲区
        }
    }

    file.close(); // 关闭文件
}

int main() {
    calculatePi();
    return 0;
}

这段代码使用了莱布尼茨级数的方法来计算圆周率,每计算出一位就输出一次,并将结果存储到pi.txt文件中。请注意,这个算法是一个无限循环,需要手动关闭程序。

代码详解:

  • #include <iostream>: 引入输入输出流库
  • #include <fstream>: 引入文件操作库
  • calculatePi() 函数:
    • std::ofstream file('pi.txt');: 打开文件 pi.txt 并准备写入
    • long double pi = 0.0;: 初始化圆周率变量
    • long double sign = 1.0;: 初始化符号变量,用于交替加减
    • long double denominator = 1.0;: 初始化分母变量
    • long double term = 0.0;: 初始化每一项的值
    • int i = 0;: 初始化循环计数器
    • while (true): 无限循环
      • term = sign / denominator;: 计算每一项的值
      • pi += term;: 将当前项的值累加到圆周率变量中
      • sign = -sign;: 切换符号变量
      • denominator += 2.0;: 更新分母变量
      • std::cout << 'Pi: ' << pi * 4 << std::endl;: 输出当前计算出的圆周率值
      • file << 'Pi: ' << pi * 4 << std::endl;: 将当前计算出的圆周率值写入文件
      • i++;: 计数器加1
      • if (i % 100000 == 0): 每计算100000次,刷新文件缓冲区,确保数据及时写入文件
    • file.close();: 关闭文件
  • main() 函数: 调用 calculatePi() 函数,开始计算圆周率
C++无限计算圆周率并实时输出 - 代码详解

原文地址: https://www.cveoy.top/t/topic/qBZT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录