无法遍历所有矩阵元素

时间:2016-01-31 08:31:04

标签: c loops matrix

我正在尝试创建一个数据结构来存储矩阵并编写一个例程来生成随机数的方阵。

这是我的代码。我奇怪的是只得到2个浮点数作为输出。我正在做所有这些来实现strassen矩阵乘法,这就是我将rs, re, cs, ce添加到struct的原因。

#include <stdio.h>
#include <stdlib.h> 
#include <time.h>   

typedef struct _matrix {
    int rs;
    int re;
    int cs;
    int ce;
    float a[100][100];
}matrix;

void display(matrix m)
{
    int i, j;

    for (i=m.rs ; i<=m.re ; i++) {
        for (j=m.cs ; j<=m.ce ; j++) 
            printf("%f", m.a[i][j]);
        printf("\n");
    }
    printf("\n");

    return;
}

matrix random_matrix(int n)
{
    matrix random;   
    random.cs = random.rs = 0;
    random.rs = random.re = n -1;

    int i, j;   

    for(i=0; i < n; i++){
        for(j = 0; j < n; j++)
            random.a[i][j] = rand();
    }

    return random;       
}

int main(void)
{ 
    matrix m1 = random_matrix(3);
    matrix m2 = random_matrix(3);  
    display(m1); 
    display(m2);


    return 0;
}

1 个答案:

答案 0 :(得分:3)

我认为,要在代码中使用random_matrix()函数

来拟合逻辑
   random.rs = random.re = n -1;

应该是

  random.ce = random.re = n -1;

否则,在display()中,for (i=m.rs ; i<=m.re ; i++)没有意义。

也就是说,要查看随机数生成器,您可以在调用矩阵生成函数之前调用srand(time(NULL));中的main()