【问题标题】:Cannot loop over all the matrix elements无法遍历所有矩阵元素
【发布时间】:2016-01-31 08:31:03
【问题描述】:

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

这是我的代码。奇怪的是,我只得到 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;
}

【问题讨论】:

  • 建议:在main() 中调用srand(time(NULL)); 一次。
  • 随机数生成不是我的问题。我的代码的主要问题是我只得到 2 个浮点数作为获取 3x3 矩阵的输出。我不明白我搞砸的地方

标签: c loops matrix


【解决方案1】:

我认为,为了符合逻辑,在您的代码中,在 random_matrix() 函数中,

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

应该是

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

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

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

【讨论】:

  • 一个简单的错字:打我吧。
  • @emperorspride188 你真的必须学习一些基本的调试,比如检查你的控制变量的值。
  • @WeatherVane :)。有时你只需要一双额外的眼睛来捕捉这些错误。 :)
猜你喜欢
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 2016-02-12
相关资源
最近更新 更多