Chương trình nhân ma trận với 1 vector in ra kết quả sai

Chương trình nhân 1 ma trận với 1 vector, khi em test với ma trận 4x4 trở lên thì in ra kết quả không đúng, nhưng khi chay debug thì lại ra kết quả bình thường. Các bác giúp em với.:pensive:

#include "stdlib.h"
#include "time.h"
#include "conio.h"
#include "windows.h"

void inmatran(float mang[], int sohang, int socot);
void taomatran(float mang[], int sohang, int socot);
void nhanmatran(void);
void main()
{
    nhanmatran();
}

void nhanmatran(void)
{
    int socot, sohang, i, j;
    float *matran1, *vector1, *matrankq, gtri;

    printf("Nhap kich thuong cua ma tran: ");
    scanf("%d %d",&sohang, &socot);
    //tao ma tran va vector voi cac gia tri ngau nhien tu -100->100
    matran1=malloc(sohang*socot*sizeof(float));
    taomatran(matran1,sohang,socot);
    inmatran(matran1, sohang, socot);

    vector1=malloc(socot*sizeof(float));
    taomatran(vector1,socot,1);
    inmatran(vector1,socot,1);
    matrankq=malloc(sizeof(float)*sohang);
    for (i=0; i<sohang; i++)
    {
        for(j=0; j<socot; j++)
        {
            matrankq[i]+=(matran1[i*socot+j]*vector1[j]);
            gtri=matrankq[i];
        }
    }

    inmatran(matrankq,1,sohang);
}

void taomatran(float mang[], int sohang, int socot)
{
    int j, i;
    float gtri;
    static int nhanmatran;
    srand(time(NULL)-nhanmatran);
    nhanmatran+=1;
    for(i=0; i<sohang; i++)
    {
        for (j=0; j<socot; j++)
        {
            mang[i*socot+j]=(float)(rand()%200)/10-10;
            gtri=mang[i*socot+j];
        }

    }
}

void inmatran(float mang[], int sohang, int socot)
{
    int i, j;
    float gtri;
    for (i=0; i<sohang; i++)
    {
        for (j=0; j<socot; j++)
        {
            gtri=mang[i*socot+j];
            printf("%f\t",gtri);
        }
        printf("\n");
    }
    printf("\n\n");
}

someone help me!! please!!:disappointed_relieved:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?