格式化二维数组中的样式

时间:2010-10-04 14:57:34

标签: c++

例如:让二维数组为

1 2 3 

2 3 5

7 8 9 

然后输出必须是

1 2 3

  3 5

    9

使用简单的for循环

我想要语法。

2 个答案:

答案 0 :(得分:6)

您的意思是要打印上三角子集吗?

我建议您在生成输出时使用宽度说明符(例如,对于printf为%4d,对于iostreams为cout << setw(4) << x;),以便对齐不依赖于内容。

然后遍历你的数组并测试你是否在上三角形。如果是,则输出值,如果否,则输出空格。到达每行的末尾时,输出换行符。

答案 1 :(得分:0)

对于表示为2D阵列的方阵

int arr[ N ][ N ];

元素

arr[ i ][ j ]  where 0 <= i < N and 0 <= j < N
当且仅当

时,

位于上对角线

i <= j

true

所以,代码可以是

bool isElemInUpperDiagonal( int row, int column ) {
    return row <= column;
}

for( int i = 0; i < N; ++i ) {
    for( int j = 0; j < N; ++j ) {
        if( isElemInUpperDiagonal( i, j ) {
            cout << arr[ i ][ j ];
        }
        else {
            cout << " ";    // space for non upper diagonal
        }
        cout << " ";        // unconditional space
    }
    cout << "\n";           // newline after every row
}