代码之家  ›  专栏  ›  技术社区  ›  Simple

如何在C++中修复金字塔模型?

c++
  •  1
  • Simple  · 技术社区  · 6 年前

    我正在尝试输出: enter image description here

    #include <iostream>
    using namespace std;
    
    int main() {
    int number;
    bool flag;
    
        do {
            cout << "\t\t\Menu\n";
            cout << "Enter a number between 6 and 12.\n";
            cin >> number;
    
            if (number > 5 && number < 13) {
                flag = true;
                for(int index = 1; index <= number; ++index) {
    
                    //Loop for spaces.
                    for(int spaces = index; spaces < number; ++spaces) {
                        cout << " ";
                    }
    
                    //Loop for numbers.
                    int counter = index;
                    int counter2 = 1;
                    for(int index2 = 1; index2 <= (2 * index - 1); ++index2) {
                        if (counter > 0) cout << counter--;
                        else cout << ++counter2;
                    }
    
                    cout << "\n";
                }
    
            } else cout << "Enter a valid number!\n";
    
        } while (!flag);
    
    return 0;
    }
    

    我的输出:

    enter image description here

    如何用适当的空格固定输出,我尝试用空格连接,但不适合,如何正确地适合它?

    1 回复  |  直到 6 年前
        1
  •  2
  •   iBug    6 年前

    for(int spaces = index; spaces < number; ++spaces) {
        cout << "     ";
    }
    

    为了处理不同的数字长度,我建议C++的等价 printf() 和格式化字符串, cout << setw() :

    #include <iomanip>
    
    cout << setw(4) << number;
    

    ... 或者只是使用 printf :

    printf("%4d", number);