C:布尔矩阵和数组

时间:2014-12-23 16:24:43

标签: c matrix

我正在学习C,并尝试在输入中从数组(图形的边缘)打印布尔矩阵(5 x 5)。如果矩阵中元素的位置具有相应的边缘,则为" 1"否则为" 0"。例如:

我输入:1 2 1,4 4,2 3,4 2,3 5

我希望在(1,2)和(2,1)位置; (1,4)和(4,1); (2,4)和(4,2); (2,3)和(3,2),(3,5)和(5,3)它打印1,但在所有其他打印中为0。

这是我能够写的,但并不能真正发挥作用:

(我研究了多维数组,但我不知道它们是否对这种情况有用。)

int i, j;

int array1[5], array2[5];

for (i = 0; i < 5; ++i)
    {
    printf("Insert the edges %d of the graph\n", i);
    scanf("%d %d", &array1[i], &array2[i]);
    } 

printf("{");
for (i = 0; i < 5; ++i)
printf("(%d,%d)", array1[i], array2[i]);
printf("}\n");

for (i = 0; i < 5; ++i) {
    for (j = 0; j < 5; ++j) 
        if (((array1[i] == i+1) && (array2[i] == j+1)) || ((array1[i] == j+1) && (array2[i] == i+1))) printf("%d ", 1); 
        else printf("%d ", 0); 
        printf("\n");  }

我应该看到的(使用那些样本输入):

http://imageshack.com/a/img537/9986/jx5roa.png

我得到了什么:

http://imageshack.com/a/img537/6341/kroVQK.png

感谢您的时间!

1 个答案:

答案 0 :(得分:2)

您应该创建二维数组。最初用全零填充它,然后当用户输入边时,将这些元素更改为一个。

#define SIZE 5
int array[SIZE][SIZE];
int i, j;
// Initialize array to 0
for (i = 0; i < SIZE; i++) {
    for (j = 0; j < SIZE; j++) {
        array[i][j] = 0;
    }
}

// Get edges from user
for (i = 0; i < SIZE; i++) {
    int e1, e2;
    printf("Insert the edges %d of the graph\n", i);
    scanf("%d %d", &e1, &e2);
    // Set them to 1
    array[e1-1][e2-1] = 1;
    array[e2-1][e1-1] = 1;
}

// Display the array
for (i = 0; i < SIZE; i++) {
    for (j = 0; j < SIZE; j++) {
        printf("%d ", array[i][j]);
    }
    printf("\n");
}