C++ (显示棱锥体)编写一个程序,提示用户输入1到15之间的整数并显示棱锥体

C++ (显示棱锥体)编写一个程序,提示用户输入1到15之间的整数并显示棱锥体,c++,C++,我想创建一个创建金字塔的程序。其大小(行数)由用户输入决定 这就是我迄今为止所尝试的。它只展示了金字塔的一半 #包括 使用名称空间std; int main() { //忽略所有变量 int n,m,i,j; cout>n; 对于(i=1;i将变量声明为接近其使用位置。为其指定有意义的名称: #include <iostream> #include <iomanip> int main() { std::cout << "Enter the numb

我想创建一个创建金字塔的程序。其大小(行数)由用户输入决定

这就是我迄今为止所尝试的。它只展示了金字塔的一半

#包括
使用名称空间std;
int main()
{
//忽略所有变量
int n,m,i,j;
cout>n;

对于(i=1;i将变量声明为接近其使用位置。为其指定有意义的名称:

#include <iostream>
#include <iomanip>

int main()
{
    std::cout << "Enter the number of lines: ";
    int num_lines;
    if (!(std::cin >> num_lines) || num_lines < 1 || 15 < num_lines) {
        std::cerr << "Input error. Bye :(\n\n";
        return EXIT_FAILURE;
    }

    for (int current_line{ 1 }; current_line <= num_lines; ++current_line) {
        for(int spaces = 0; spaces < num_lines - current_line; ++spaces)
            std::cout << "   ";

        for(int number = current_line; number; --number)
            std::cout << std::setw(2) << std::right << number << ' ';

        for (int number = 2; number <= current_line; ++number)
            std::cout << std::setw(2) << std::right << number << ' ';

        std::cout.put('\n');
    }
}
15的示例输入说明:
我正在使用
std::wetw()
将数字的输出填充到两位数。
std::right
right将这两个字符内的输出对齐:
1
~>
“1”
11
~>
“11”
。我这样做是为了在打印每行开头的空格时不必编写更复杂的代码。一个打印的数字也有三个字符宽——两个数字和一个空格分隔数字

谈到每行开头的空格字符:在金字塔底部,所有从15到1到15的数字都会再次打印出来。因此,数字前面的空格数必须是第一行的14倍3,第二行的13倍3,第三行的12倍3,依此类推,直到最后一行的0倍3,第15行。正如您所看到的,空格的数量是
num\u line-current\u line
乘以3。这就是第一个内部
for()
-循环所做的


()的另外两个内部
-循环应该是自规划的。一个循环从
当前行
倒计时到
1
,另一个循环再次倒计时到
当前行
。循环向上计数从
2
开始,不打印两倍于
1

的数字。声明变量尽可能接近它们的使用位置。为它们指定有意义的名称:

#include <iostream>
#include <iomanip>

int main()
{
    std::cout << "Enter the number of lines: ";
    int num_lines;
    if (!(std::cin >> num_lines) || num_lines < 1 || 15 < num_lines) {
        std::cerr << "Input error. Bye :(\n\n";
        return EXIT_FAILURE;
    }

    for (int current_line{ 1 }; current_line <= num_lines; ++current_line) {
        for(int spaces = 0; spaces < num_lines - current_line; ++spaces)
            std::cout << "   ";

        for(int number = current_line; number; --number)
            std::cout << std::setw(2) << std::right << number << ' ';

        for (int number = 2; number <= current_line; ++number)
            std::cout << std::setw(2) << std::right << number << ' ';

        std::cout.put('\n');
    }
}
15的示例输入说明:
我正在使用
std::wetw()
将数字的输出填充到两位数。
std::right
right将这两个字符内的输出对齐:
1
~>
“1”
11
~>
“11”
。我这样做是为了在打印每行开头的空格时不必编写更复杂的代码。一个打印的数字也有三个字符宽——两个数字和一个空格分隔数字

谈到每行开头的空格字符:在金字塔底部,所有从15到1到15的数字都会再次打印出来。因此,数字前面的空格数必须是第一行的14倍3,第二行的13倍3,第三行的12倍3,依此类推,直到最后一行的0倍3,第15行。正如您所看到的,空格的数量是
num\u line-current\u line
乘以3。这就是第一个内部
for()
-循环所做的


()的另外两个内部
-循环应该是自规划的。一个循环从
当前行
倒计时到
1
,另一个循环再次倒计时到
当前行
。循环向上计数从
2
开始,以不打印两倍于
1
的数字。您尝试过使用调试器吗?您尝试过使用调试器吗?