如何并排打印倒置的半星形金字塔图案

  • 本文关键字:金字塔 打印 c++
  • 更新时间 :
  • 英文 :


我想相邻显示一个倒置的半星形金字塔图案。这是想要的输出

这是我的代码:

#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当作列,就可以理解这段代码。

最新更新