On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 22.05.18 17:08. Заголовок: Вывод пирамиды на консоль.


Очень часто для начинающих программистов, изучающих 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


Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 5
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет