将2d 100x100阵列分成4个25x25不同的输出

时间:2014-07-22 13:18:01

标签: java c++ arrays

我有一个100x100的数组,但我需要清楚地显示4个边(topleft,topright,bottomleft,bottomright)之间的区别,除了使用颜色来显示差异,我想如何表明它是不同的。问题是我必须使用字母'A'来表示数组输出。我也被允许只使用1个100x100阵列。意思是我不能使用4个25x25阵列。这是用c ++编写的,但也欢迎java代码或解释。 像这样的东西? 样本输出:

AAAAAAAAA AAAAAAAAA
AAAAAAAAA AAAAAAAAA

AAAAAAAAA AAAAAAAAA
AAAAAAAAA AAAAAAAAA

1 个答案:

答案 0 :(得分:0)

如果要打印分隔每个象限的数组,如问题所示,您只需将数组拆分为两个长度并将其与空格分开。如果大小是偶数。例如

int SIZE = 100;
int MID = SIZE/2;
char a[][] = new char[SIZE][SIZE];
for(char[] col : a){
    Arrays.fill(col, 'A');
}
for(int i=0; i<SIZE; i++){
    if(i == MID) System.out.println();
    for(int j=0; j<SIZE; j++){
        if(j == MID) System.out.print("  ");
        System.out.print(a[i][j]);
    }
    System.out.println();
}

这里的想法是迭代每个元素,如果任何索引是一半附加一个空的空格。因此,如果您将大小设置为4,您就会得到像

AA  AA
AA  AA

AA  AA
AA  AA

C ++示例

#include <iostream>
#define SIZE 4

int main() {
    int MID = SIZE/2;
    char a[SIZE][SIZE];

    //Initializing array
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            a[i][j] = 'A';
        }
    }

    //Print squares
    for(int i=0; i<SIZE; i++){
        if(i == MID) cout << endl;
        for(int j=0; j<SIZE; j++){
            if(j == MID) cout << " ";
            cout << a[i][j];
        }
        cout << endl;
    }

    return 0;
}