如何在c++中显示单独列的结果

How to display results in separate columns in C++

本文关键字:单独列 结果 显示 c++      更新时间:2023-10-16

我正在写一个数论证明程序,但是我在写代码方面经验很少。

我要做的是显示公式的所有结果:

                             Answer = sqrt [4*n]

的地方;N = 1,2,3,4,5,6,7,…50

但是我想在两组列中显示结果,即

  • 我希望第一列是n的前半部分。所以有50次迭代,第一列将包含数字0 -> 25。
  • 第二列应该显示等式的前25个答案。
  • 第三列是n的后半部分,即数字26->50
  • 第四列应该显示n的最后25个值的结果。

我试图显示的示例如下*:
*(忽略下面示例中的点,它们仅用于显示目的)

n :............ 回答 :............ n :........... 答:

到目前为止,我有代码工作,但我只是不能弄清楚如何分割和显示n值和答案值,我已经显示了上面。我所能做的就是只显示2列中的值,如下所示:

n :........... 答:

这是我目前得到的:

    #include <iostream> 
    #include <iomanip>
    #include <cmath> //preprocesser directives
    using namespace std; //avoids having to use std:: with cout/cin

    int main (int argc, char* argv[])

    {
        int n;
        float Ans;
        cout << setw(4) << "n:" <<  "tt" << setw(4) << "Answer:" << "n" << endl;

    for (int n = 0; n<=50; n++)
    {
    Ans = sqrt ((4)*(n));   
    cout  << setw(4) << n <<  "tt" << setprecision(4) << setw(4) << Ans << endl;
    }    
    cout << "nnPress enter to end" << endl;
    cin.get(); 
    }                       

我真的不知道如何将它分成4个单独的列,但我知道t函数必须与它有关!??

任何帮助都是感激的!由于

将for循环改为:

for (int n = 1; n<=25; n++)
{   
    Ans = sqrt ((4)*(n));   
    cout  << setw(4) << n <<  "tt" << setprecision(4) << setw(4) << Ans << "tt";
    Ans = sqrt ((4)*(n + 25));   
    cout  << setw(4) << n + 25 <<  "tt" << setprecision(4) << setw(4) << Ans << endl;
}

从1循环到25,在循环体中计算两个结果:n和n + 25。

下面是一个非常简单的可编译和可运行的示例,向您展示了基本思想:

#include <iostream>
#include <math.h>
int main()
{
    for (int n = 1; n <= 25; ++n)
    {
        std::cout << n << "t" << sqrt(n) << "t"
            << (n + 25) << "t" << sqrt(n + 25) << "n";
    }
}

这可能已经足够满足您的需要了。但是,请注意我使用了制表器。这很容易编写,但使正确的输出取决于制表符的大小,也就是说,你可能会在某些显示器或编辑器上得到不正确对齐的列。

这个问题的一个解决方案是创建HTML输出,使用<table>元素,并让web浏览器负责显示实际的表:

#include <iostream>
#include <math.h>
int main()
{
    std::cout << "<table>n"; // and other HTML stuff
    for (int n = 1; n <= 25; ++n)
    {
        std::cout << "<tr>";
        std::cout << "<td>" << n << "</td><td>" << sqrt(n) << "</td><td>"
            << (n + 25) << "</td><td>" << sqrt(n + 25);
        std::cout << "</tr>n";
    }
    std::cout << "</table>n";
}

如果你是在Windows上,那么把它编译成output.exe,然后像下面这样调用它来创建一个HTML文件:

output.exe >output.html 

如果您想要纯文本输出,事情会变得更加困难。您必须提前计算所有结果,将它们存储在std::vector中,将每个结果转换为std::string s,查看字符串的大小,选择最长的,然后输出具有适当填充空间的所有项目。事实上,你必须学习很多新的东西,这可能会导致一两个额外的,更具体的问题。

Edit:您正在使用setw(4)。实际上,如果你喜欢固定的宽度,这是另一个合理的解决方案。

此解决方案解决了您的问题,并且具有解决必须将(x,y)对输出到四列表的类似问题的优势。您不会被锁定在输入增加1,2,3等

添加到文件的顶部,与其他包括

#include <vector>

添加到正文

cout << setw(4) << "n:" <<  "tt" << setw(4) << "Answer:" << "n" << endl;
std::vector<double> inputs;
std::vector<double> answers;
for (int n = 0; n<=50; n++){
    inputs.push_back(n);  
    inputs.push_back(sqrt(4*n));
}
for (int n = 1; n<=25; n++){
    cout  << setw(4) << Inputs[n] <<  "tt" << setprecision(4) << setw(4) << Answers[n] << "tt" << setw(4) << Inputs[n+25] <<  "tt" << setprecision(4) << setw(4) << Answers[n+25] << endl;
}