Очень часто для начинающих программистов, изучающих
C++, встречается задание вывода "пирамиды", заполненный некоторым символом, например, символом
*, на консоль.
Обычно начинающие программисты для выполнения этого задания используют вложенные циклы, в которых сами же путаются.
Так как
C++ - это объектно-ориентированный язык, то было бы логично написать соответствующий класс пирамиды, который содержит функцию вывода себя на консоль.
Вот как может выглядеть соответствующий класс.
#include <iostream>
#include <iomanip>
class Pyramid
{
private:
size_t height;
char filler;
static const char DEFAULT_FILLER = '*';
static const char BLANK = ' ';
public:
Pyramid( size_t height, char filler = DEFAULT_FILLER ) : height( height ), filler( filler )
{
}
std::ostream & out( std::ostream &os = std::cout ) const
{
for ( size_t i = 0; i < height; i++ )
{
os << std::setfill( BLANK ) << std::setw( height - i ) << filler
<< std::setfill( filler ) << std::setw( 2 * i + 1 ) << '\n';
}
return os;
}
};
std::ostream & operator <<( std::ostream &os, const Pyramid &p )
{
return p.out( os );
}
int main()
{
while ( true )
{
std::cout << "Enter the height of a pyramid (0 - exit): ";
std::size_t height;
if ( not ( std::cin >> height ) || ( height == 0 ) ) break;
std::cout << '\n' << Pyramid( height ) << std::endl;
}
}
Вывод данной демонстрационной программы может быть, к примеру, следующим
Enter the height of a pyramid (0 - exit): 10
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
Enter the height of a pyramid (0 - exit): 9
*
***
*****
*******
*********
***********
*************
***************
*****************
Enter the height of a pyramid (0 - exit): 8
*
***
*****
*******
*********
***********
*************
***************
Enter the height of a pyramid (0 - exit): 7
*
***
*****
*******
*********
***********
*************
Enter the height of a pyramid (0 - exit): 6
*
***
*****
*******
*********
***********
Enter the height of a pyramid (0 - exit): 5
*
***
*****
*******
*********
Enter the height of a pyramid (0 - exit): 4
*
***
*****
*******
Enter the height of a pyramid (0 - exit): 3
*
***
*****
Enter the height of a pyramid (0 - exit): 2
*
***
Enter the height of a pyramid (0 - exit): 1
*
Enter the height of a pyramid (0 - exit): 0