Как увеличить и уменьшить число в цикле - PullRequest
0 голосов
/ 27 ноября 2018

Я попытался получить вывод, подобный этому:

               1
           2   4   2
        3  5   7   5   3
    4   6  8   10  8   6   4
5   7   9  11  13  11  9   7   5

, и я написал этот код:

int input_n = 0;
int x;
int rowNumber = 1;

std::cin >> input_n;

int result = 0;

for (int i = 1; i <= input_n; i++)
{
    std::cout << std::setw(10 - i);
    rowNumber = i;
    int addCounter = rowNumber - 1;

    if (rowNumber == 1)
    {
        std::cout << std::setw(11) << rowNumber;
    }
    else 
    {
        for (x = 1; x <= rowNumber + 1; x++)
        {
            std::cout << rowNumber << std::setw(3);
            // What Should do here?
        }

    }
    std::cout << std::endl;

}

Наконец я получил этот вывод:

              1
           2  2  2
         3  3   3   3
       4   4   4   4   4
     5   5   5   5   5   5

Я просто запутался, как я могу получить как выше вывод?Я перепробовал много петель и пока.но я не получил правильный вывод.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вот пример вашего кода:

#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>

using std::cin;
using std::cout;
using std::ostream;
using std::ostringstream;
using std::right;
using std::setw;
using std::string;

void tree(ostream&, int n);

void tree(ostream& o, int n)
{
    auto indent = [](auto amount) { return string(static_cast<string::size_type>(amount), ' '); };
    auto format = [](auto value) { ostringstream s; s << right << setw(3) << value; return s.str(); };

    for (int i = 1; i <= n; ++i)
    {
        o << indent((n - i) * 3);

        for (int x = 1; x < i * 2; ++x)
        {
            o << format(i + (x - 1) * 2 + (x > i ? x - i : 0) * -4);
        }

        o << '\n';
    }
}

int main()
{
    int input_n = 0;

    if (cin >> input_n)
    {
        tree(cout, input_n);
    }
}
0 голосов
/ 27 ноября 2018

Взгляните на это

Арифметическая прогрессия , должна прояснить процесс увеличения и уменьшения по причине 2 числа.Число цифр в строке равно rownumber + rownumber - 1 или 2*rownumber -1, затем числа увеличиваются на два для (rownumber*2-)/2, а затем начинают уменьшаться на два.

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