我正在编写一个用于数论证明的程序,但我在编写代码方面经验很少。
我想要做的是显示公式的所有结果:
Answer = sqrt [4*n]
其中; n = 1,2,3,4,5,6,7,...... 50
但我想在两组列中显示结果,即
我试图展示的一个例子是*:
*(忽略以下示例中的点,它们仅用于显示目的)
N:............回答:............ N:...........答案:
到目前为止,我已经使用了代码,但我无法弄清楚如何分割和显示上面显示的n值和Answer值。 我所能做的只是在两列中显示值,如下所示:
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:" << "\t\t" << setw(4) << "Answer:" << "\n" << endl;
for (int n = 0; n<=50; n++)
{
Ans = sqrt ((4)*(n));
cout << setw(4) << n << "\t\t" << setprecision(4) << setw(4) << Ans << endl;
}
cout << "\n\nPress enter to end" << endl;
cin.get();
}
我真的不知道如何将它分成4个单独的列,但我知道\ t函数必须与它有关!??
任何帮助表示赞赏! 感谢
答案 0 :(得分:1)
将for循环更改为:
for (int n = 1; n<=25; n++)
{
Ans = sqrt ((4)*(n));
cout << setw(4) << n << "\t\t" << setprecision(4) << setw(4) << Ans << "\t\t";
Ans = sqrt ((4)*(n + 25));
cout << setw(4) << n + 25 << "\t\t" << setprecision(4) << setw(4) << Ans << endl;
}
答案 1 :(得分:0)
从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,查看字符串的大小,选择最长的然后输出具有适当填充空格的所有项目。实际上,你必须为此学习很多新东西,这可能会导致一些或两个关于Stack Overflow的更具体的问题。
修改:您正在使用setw(4)
。实际上,如果您对固定宽度感到满意,那么这是解决问题的另一种合理方法。
答案 2 :(得分:0)
此解决方案解决了您的问题,并且具有解决类似问题的优势,您必须将(x,y)对输出到四列表。你不会被锁定为增加1,2,3等的输入。
将其添加到文件顶部,其他包含
#include <vector>
将此添加到正文
cout << setw(4) << "n:" << "\t\t" << 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] << "\t\t" << setprecision(4) << setw(4) << Answers[n] << "\t\t" << setw(4) << Inputs[n+25] << "\t\t" << setprecision(4) << setw(4) << Answers[n+25] << endl;
}