треугольник по центру - PullRequest
       1

треугольник по центру

0 голосов
/ 13 декабря 2010

Я хочу создать шаблон в C ++, который выглядит как треугольник (или половина ромба) используя звездочки: шаблон должен иметь 1, 2, 3, 4 и оканчиваться на 5 звезд, как это

  *
  **
 ***
 ****
*****

(но прямо!) мой код выглядит следующим образом:

-` # включают использование пространства имен std; int main () {

int size;
cout<<"size:"<<endl;
cin>>size;

int blank=size/2;
int newsize=1;
for (int i=0; i<=size/2; i++)
{
    for(int j=blank;j>0;j--)
        cout <<" ";
    blank--;
    for(int j=newsize; j>0; j--)
        cout <<"*";
    newsize+=2;
    cout <<endl;
}


return 0;

} ` Моя единственная проблема в том, что он отображает 1, 3 и 5 звезд, как это.

  *
 ***
*****

это небольшая проблема, но я изменил разные части кода я не понимаю, как это правильно.

есть предложения?

спасибо :)

Ответы [ 3 ]

0 голосов
/ 13 декабря 2010

Правильно ли я понял: вы хотите разместить звездочки на границах мест персонажей? Если это так, это невозможно. Каждая звездочка (или любой другой символ), когда отображается в моноширинных шрифтах, будет находиться в середине места символа, как в сетке. Вы можете размещать звездочки внутри ячеек, но вы не можете размещать звездочки на границах сетки.

0 голосов
/ 13 декабря 2010
int NUMLINES = 5;

void display(int, char);

void main(){
for (int i=1; i<= NUMLINES; ++i){
    display((NUMLINES + 1 - i), ' ');
    display(( 2 * i - 1 ), '*');
    cout << endl;
}

}
void display (int howmany, char symbol){
for (int i = 1; i<=howmany; ++i)
 cout << symbol;
}
0 голосов
/ 13 декабря 2010

Я не уверен, что вы подразумеваете под "но прямо", поэтому сейчас я просто проигнорирую это ...

Начните с blank того же значения, что и size, так чтоВы можете уменьшать значение каждый раз, не уменьшая его вдвое:

int blank=size;

Цикл до size вместо size/2, чтобы получить больше строк:

for (int i=0; i<=size; i++)

Уменьшениена два в цикле для пробелов, чтобы получить половину числа пробелов:

for(int j=blank;j>0;j-=2)

Увеличьте размер на один вместо двух, чтобы получить более медленное увеличение:

newsize++;

Это должно привести квывод, который вы показали.

Редактировать:

Я проверил это, чтобы убедиться, и вывод:

   *
  **
  ***
 ****
 *****
******

Чтобы получить точный вывод, который вы просили, начните с пустого меньше:

int blank=size - 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...