C ++程序:使用输入重定向打印梯形

时间:2011-03-25 23:34:23

标签: c++

我正在尝试打印一个梯形,但由于某种原因,我要么继续得到一个三角形,要么我的梯形的大小是错误的。有人可以告诉我有什么问题或缺少什么?非常感谢您的帮助。 有没有办法可以为顶行/基数和高度输入自己的值?我输入了我的身高,而且身高不合适。

for (i = 1; i < trapeH; i++)
{
    for (k = spacesT-1; k > 0; k--)
    {
        cout << " ";
    }

    spacesT = spacesT - 1;

    for (j = 1; j <= (2*i + 1); j++)
    {
        cout << "*";
    }

    cout << endl;
}

2 个答案:

答案 0 :(得分:1)

trapeHspacesT的输入值是什么?

我使用了10并得到了以下输出:

         ***
        *****
       *******
      *********
     ***********
    *************
   ***************
  *****************
 *******************

所以它似乎有效 - 它是一个梯形


以下是更正的来源,您的参数是顶行的高度和宽度:

void trapezoid (int width, int height)
{
   for (int row = 0; row < height; ++row) {
      for (int col = height - row; col > 0; --col) {
         cout << " ";
      }
      for (int col = 0; col < (width + 2 * row); ++col) {
         cout << "*";
      }
      cout << endl;
   }
}

答案 1 :(得分:1)

for (j=1; j <=(2*i+1); j++)

这一行保证你的梯形总是从宽度3开始,每行增长2 *。如果你想要一个可变宽度的梯形,你需要引入一个额外的变量。

但正如MacGucky指出的那样,你确实有一个梯形。

编辑:

你的梯形的高度将是trapeH - 1.如果设置trapeH = 10,你将经历9次循环,因为i = 10将导致循环退出。