我想相邻显示一个倒置的半星形金字塔图案。这是想要的输出
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int n, x, y, k;
cout << "Enter Number of Rows: ";
cin >> n;
for (x = n; x >= 1; x--)
{
for (y = 1; y <= x; y++)
{
if (y <= x)
cout << "*";
else
cout << " ";
}
for (y = n; y >= 1; y--)
{
if (y <= x)
cout << "*";
else
cout << " ";
}
cout << "n";
}
return 0;
}
这是我运行代码后得到的输出。所需的行数为10。运行完我的代码后,输出与我预期的不一样。请告诉我如何改正。非常感谢。
我在问题中看到了一些对称性
- 对于n行,我们打印2*n+1个字符
- 对于yth行,如果x小于n-y或大于n+y,我们将打印一个星号
所以我用更复杂的if语句编码了一个单双循环。我不得不调整if语句,直到它起作用。
#include <iostream>
using namespace std;
int main()
{
int n, x, y;
cout << "Enter Number of Rows: ";
cin >> n;
for (y = 0; y < n; y++)
{
for (x = 2*n+1; x > 0; x--)
{
if ((x > n+y+1) || (x < n-y+1))
cout << "*";
else
cout << " ";
}
cout << "n";
}
return 0;
}
好吧,你需要稍微改变一下你的逻辑,一切都好。
这是代码:-
#include <iostream>
using namespace std;
int main()
{
int n, x, y, k;
cout << "Enter the number of Rows: ";
cin >> n;
for(x = 1; x <= n; x++)
{
for(y = n; y >= 1; y--)
{
if(y <= x)
cout << " ";
else
cout << "*";
}
for(y = 1; y <= n; y++)
{
if(y <= x)
cout << " ";
else
cout << "*";
}
cout << "n";
}
return 0;
}
说明:-我从第1行开始,一直到第"1"行;n〃;。现在我需要打印两个不同的反转标志,所以我使用了两个for循环。在一个循环中,我从列";n〃;并且一直到第>1,在另一个循环中,我正在做与此相反的操作,这样两个标志将彼此相反。只要把X当作行,把Y当作列,就可以理解这段代码。