我正在尝试打印一个梯形,但由于某种原因,我要么继续得到一个三角形,要么我的梯形的大小是错误的。有人可以告诉我有什么问题或缺少什么?非常感谢您的帮助。 有没有办法可以为顶行/基数和高度输入自己的值?我输入了我的身高,而且身高不合适。
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;
}
答案 0 :(得分:1)
trapeH
和spacesT
的输入值是什么?
我使用了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将导致循环退出。