有没有办法C++让循环的输出显示在同一行上

Is there a way in C++ to get the output of a loop to display on the same line?

本文关键字:一行 显示 C++ 循环 输出 有没有      更新时间:2023-10-16

我在大学的入门C++课上。我们被分配了一个项目,使用pi=sumtion((-1)^i+1)*(4/2i-1)的系列创建一个程序来近似pi。

我需要我的输出看起来像这样:

该程序使用 n 项级数展开来近似 pi。
输入值 n> 6
pi[6] = 4[1-1/3+1/5-1/7+1/9-1/11] = 2.9760461760417560644

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
int numOfTerms;
cout <<"This program calculates pi using an n-term series expansion."<<endl;
cout <<"Enter the value for n>";
cin >>numOfTerms;
if (numOfTerms<=0)
    cout <<numOfTerms<<"is an invalid number of terms."<<endl;
else
{
    cout <<"pi["<<numOfTerms<<"] = ";
    int i;
    for (i=1; i<=numOfTerms; i++)
    {   
        double pi, sum, firstTerm, secondTerm;
        firstTerm=pow(-1,(i+1));
        secondTerm=1/(2*i-1);
        pi=firstTerm*secondTerm;
        {
            if (pi <= 4)
                cout <<firstTerm<<"/"<<secondTerm;
            else
                cout <<"You have a C++ math error.";
        }
        sum=sum+(4*pi);
        cout <<" = "<<sum<<endl;
    }   
}
return 0;
}   

我有一个早期版本的代码,它正确地对 n 级数近似求和,但它没有显示等于总和的扩展系列。

我当前的版本不显示校正总和,但它在屏幕上显示 n 次 pi[n]。

愿意尝试自己弄清楚项目的大部分内容,我只需要知道是否有办法让我的循环的输出显示在一行上,而不是每个迭代都显示在自己的行上。

不要使用 endl,你的工作就会完成。

恩德尔

插入换行符并刷新流。

它的行为等效于调用 os.put('')(或 os.put(os.widen('')) 用于其他字符类型),然后 os.flush().

三件事:首先,更改以下内容的第二项计算:

secondTerm=1.0/(2*i-1);

这样,您强制它为双精度值(否则,它将返回一个我们不想要的 int)。第二,更改此行:

cout <<firstTerm<<"/"<<secondTerm;

对于此行:

cout <<pi;

这是因为第二项持有除法的结果,而不是分母。

第三,移动此行:

cout <<" = "<<sum<<endl;

for 循环之后,因为这会打印最终结果,您将在对所有项求和后执行此操作。for 内放置该行会导致换行。如果这样做,则需要移动此行:

double pi, sum, firstTerm, secondTerm;

for 循环之前,因此 sum 变量在之后继续存在。

如果您执行所有这些操作,程序将正常工作(尽管它打印所有术语之间没有任何空格)。

不要使用 endl .这会导致换行符。