如何在c++中显示单独列的结果
How to display results in separate columns in C++
我正在写一个数论证明程序,但是我在写代码方面经验很少。
我要做的是显示公式的所有结果:
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;
}
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- valgrind-hellgrind与泄漏检查的结果不同
- 如何在C++中从两个单独的for循环中添加两个数组
- 用C++20 fmt限制结果的总大小
- 如何返回一个类的两个对象相加的结果
- 用C++在单独的头文件中完成函数体
- 具有N列和N行的矩阵,列必须具有N-1、N-2等值
- 我想根据小数位将我的结果对齐到列中
- 如何将单独的数组分组在一起(类似于按一列对表进行排序)
- 显示数组的问题.一切都放在一个单独的行中,但不放入单独的列中
- C++:两个单独的函数在嵌套时返回不同的结果?
- 将 pugixml 的结果偏移量转换为列/行
- 我正试图将一个过程的结果写入一个文本文件,我遇到的问题是列的对齐问题
- 如果列结果为Null,则C++SQLite停止错误
- c++从文本文件中读取3列到2D数组或3个单独的数组中
- 如何在使用Oracle OCCI库迭代结果时计算列的数量
- 获取SQLite结果中的列数
- 散列中的单独链接
- 将文件中的每一列排序为一个单独的数组
- 如何在c++中显示单独列的结果