C++ 如何制作沙漏图案?
我想做一个沙漏,但我不能得到沙漏的正确代码。我做错了什么?这是原始代码的较短版本C++ 如何制作沙漏图案?,c++,C++,我想做一个沙漏,但我不能得到沙漏的正确代码。我做错了什么?这是原始代码的较短版本 #include <iostream> using std::cin; using std::cout; using std::endl; int main() { int number; cin >> number; //Hourglass for (i = number; i > 0; i--) { cout << en
#include <iostream>
using std::cin; using std::cout; using std::endl;
int main()
{
int number;
cin >> number;
//Hourglass
for (i = number; i > 0; i--)
{
cout << endl;
for (int j = number; i < j; j--)
{
cout << " ";
}
for (int j = 0; i > j; j++)
{
cout << "*";
}
for (int j = 0; i > j; j++)
{
cout << "*";
}
}
for (int i = 0; i < number; i++)
{
for (int j = 0; j < (number - (i + 1)); j++)
{
cout << " ";
}
for (int j = 0; j < (2 * i + 1); j++)
{
cout << "*";
}
for (int j = 0; j < (number - (i + 1)); j++)
{
cout << " ";
}
cout << endl;
}
}
问题在您的第一个for循环中。你需要做的是移动
cout << endl;
下面的代码将在屏幕上打印沙漏*图案。可变大小是要打印的沙漏的高度。使用g++编译器编译代码
#include <iostream>
int main() {
int row, col;
int size;
int diagA, diagB;
std::cout << "Enter height of the hourglass ";
std::cin >> size;
for ( row=0; row<size; row++ ) {
for ( col=0; col<size; col++ ) {
diagA = row;
diagB = size-row-1;
if ( diagA <= diagB ){
if ( col >= diagA && col <= diagB )
std::cout << "*";
else
std::cout << " ";
}
else {
if ( col >= diagB && col <= diagA )
std::cout << "*";
else
std::cout << " ";
}
}
std::cout << std::endl;
}
std::cout << std::endl;
return 0;
}
当然,你需要沙子和玻璃来制作沙漏——或者我误解了对问题的描述——好吧,我不得不承认这是一个很好的笑话。我想做的是用星号制作一个小时玻璃杯。但是你为什么要在网站上发布作业呢?我不是想作弊或其他什么。我只是把代码的最后一个错误修复了。我还意识到我把沙漏的设计搞砸了。另外,在你的后半个小时里,第三个for循环是不必要的。它是在沙漏的右侧添加空间,您可以将其作为空白保留,并获得相同的结果。它将使您的程序更有效,做得更少!
**********
********
******
****
**
**
****
******
********
**********
#include <iostream>
int main() {
int row, col;
int size;
int diagA, diagB;
std::cout << "Enter height of the hourglass ";
std::cin >> size;
for ( row=0; row<size; row++ ) {
for ( col=0; col<size; col++ ) {
diagA = row;
diagB = size-row-1;
if ( diagA <= diagB ){
if ( col >= diagA && col <= diagB )
std::cout << "*";
else
std::cout << " ";
}
else {
if ( col >= diagB && col <= diagA )
std::cout << "*";
else
std::cout << " ";
}
}
std::cout << std::endl;
}
std::cout << std::endl;
return 0;
}