我的任务是为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/

10-08 21:33