Как вывести N одинаковых символов?

Рейтинг: 0Ответов: 1Опубликовано: 05.02.2015

Есть вот такая программа:

#include <bits/stdc++.h>
using std::cout;
using std::endl;
using std::string;

int main()
{
    const int n = 15;
    for(int i=0;i<n;i++)
        cout << string(n/2-1-i, ' ') << string(i*2+1, 42) << endl;

    return 0;
}

Но во время работы она выбрасывает исключение. Вопрос: какие есть способы избавиться от него или написать программу по-другому?

      *
     ***
    *****
   *******
  *********
 ***********
*************
terminate called after throwing an instance of 'std::length_error'
  what():  basic_string::_S_create

Ответы

▲ 1Принят

Понятно же, что n/2-1-i должно быть неотрицательным. Просто проверяйте.

А что, собственно Вы хотите напечатать? Треугольник или ромб?

Обновление

Если елочка это то, что завершается крэшем, то просто вовремя остановитесь

  for(int i = 0, d; i < n && (d = n / 2 - 1 - i) >= 0; i++) 
    cout << string(d, ' ') << string(i * 2 + 1, 42) << endl;

Или Вам нужна "елочка" из n уровней? Тогда эта формула не годиться.