Я успешно написал код для вывода треугольника Паскаля в несколько треугольной форме с использованием cout.width (total_rows - current_row), но он выглядит так:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1
Я бы хотел, чтобы он был полностью центрирован. Я понял, что я могу взять число или символы в нижней строке, вычесть количество символов в текущей строке, и разделить это на два, чтобы получить желаемое количество мест в строке [которое будет выглядеть как: cout.width ((bottow _ row _ characters - current_row_characters )/2)], но у меня проблемы с реализацией этой идеи.
Я попробовал вычислить только нижнюю строку и сохранить в ней последовательность или массив, а затем использовать string.length () или sizeof (массив), но ни то, ни другое не сработало. (sizeof всегда возвращает 4, что неверно)
Вот код:
#include <iostream>
#include <string>
using namespace std;
// Forward declaration of a function.
int Pascal (int row, int column);
/* The main function.
*
* Parameters:
* none
*
* Return value:
* 0 if we complete successfully, 1 if there was an error.
*/
int main ()
{
// introduction
cout << "\nPascal's Triangle!\n";
cout << "(Pascal's triangle is made by taking the sum of two numbers\n";
cout << "and placing that number directly underneath the two numbers.\n";
cout << "This creates a triangular array of binomial coefficients)\n\n";
// for loops to calculate and print out pascal's triangle
for (int row = 0; row <= 15; row++)
{
cout.width(16 - row);
for (int column = 0; column <= row; column++)
{
cout << Pascal(row, column) << " ";
}
cout << endl;
}
cout << endl;
}
/* This function calculates Pascal's triangle based on row and column position.
*
* Parameters:
* row, column
*
* Return value:
* the numbers in Pascal's triangle
*/
int Pascal (int row, int column)
{
// if statements to calculate pascal's triangle through recursion
if (column == 0)
return 1;
else if (row == column)
return 1;
else
return Pascal(row - 1, column - 1) + Pascal(row - 1, column);
}
-121--1850714- Я на Ubuntu и хочу записать выходной сигнал PulseAudio в файл, чтобы сделать запись программы pygame. Формат не имеет значения, потому что я могу изменить его впоследствии, так что сырое аудио в порядке.
Оглядываясь вокруг, кажется, что GStreamer может справиться с этим, но я не знаком с этим, и обширный поиск не дал ответа. Так что ответы с участием GStreamer или иным образом приветствуются.
Спасибо!