我的任务是为C ++类创建一个非常简单的随机游走程序。我写了它,并确定一切都正确,但是我遇到了这个奇怪的错误。即使坐标显示其从左到右交替走动,步长也会从0到10排列。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
int steps,i,pos=10;
srand(13699);
cout << "Please enter the amount of steps to be taken: ";
cin >> steps;
cout << endl;
for (i=0;i<=steps;i++)
{
if (rand()%2)
pos+=1;
else
pos-=1;
cout << i << ": " << pos-10 << ": " << setw(pos) << "*" << endl;
}
} // main
很显然,这里有某种模式,但是对于我的一生,我无法弄清楚……这里是指向输出屏幕截图的链接(如果有帮助的话)。 http://i.stack.imgur.com/USx4U.png谢谢大家的帮助!
最佳答案
答案不在于代码,而在于您对输出的解释。
当pos-10小于0时,则您打印此值的区域会更长(由于减号),然后您的“行者”会在输出中右移一个位置。
类似的原因,当它从9变为10时,它是不正确的。
考虑一下左边的冒号不是直线的意思。
关于c++ - 初学者C++-带有奇怪setw错误的简单随机游走程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22488691/