兰德在矩阵值

时间:2017-09-21 20:13:29

标签: c matrix random

我正在做一个需要生成随机矩阵的代码,将其保存在.txt中并对其执行某些操作。矩阵需要改变维度,我认为我宣布它的方式是允许我解除分配然后再分配它的方式(如果不是请让我知道)。

我的问题是随机数生成器不起作用,它会在文件中保存一个数字,如果我打印它会产生两个不同的输出。这可能是因为我没有很好地声明矩阵或相应地给它赋值。

我将留下它创建的三个不同输出的图片,只有一个是有意义的,因为我放置rand的范围(1-9)。

我认为问题在于矩阵的使用。矩阵是我代码中的指针吗?我何时会使用*&

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

int main(){
    FILE *f;
    int nmatrix=3;
    int nmax=nmatrix;
    int number, cout, count, count2, i, j, k, p;
    srand(time(NULL));
    //int C[nmatrix][nmatrix];
    //int (*B)[nmatrix][nmatrix] = malloc(nmatrix * nmatrix * sizeof(int));
    float **a = malloc(nmatrix * sizeof(float *));
    for (p = 0; p < nmatrix; p++) { 
        a[p]=malloc(nmatrix * sizeof(int));
    }
    while(nmatrix<=nmax){
        // Creation of Matrix
        f = fopen("matrix.txt", "w");
        for(count = 0; count < nmatrix; count ++){
            for(count2 = 0; count2 < nmatrix; count2 ++){
                a[count][count2]= (rand()%8)+1;
                fprintf(f, "%s%d ", " ", a[count][count2]);
                printf(" A1:%d, A2:%d \n", a[count][count2], a[count][count2]);
            }
            fprintf(f, "%s\n", " ");
        }
        fclose(f);
        nmatrix=nmatrix+1;
        /*More code*/
    }

    return 0;
}

enter image description here enter image description here

0 个答案:

没有答案