파아랑새 2018. 10. 9. 08:56

# include <stdio.h>

typedef struct Matrix {

int MatOne[2][3];    // 2by3

int MatTwo[3][4];    // 3by4

int mulMat[2][4];    // 2by4

}Matrix;

// function type --------------------

void _init_(Matrix* nParam);

void _matValue_(Matrix* nParam);

void _matrixMul_(Matrix* nParam);

void _printfData_(Matrix* nParam);

// ----------------------------------

int main(void) {

Matrix node;

_init_(&node);

_matValue_(&node);

_matrixMul_(&node);

_printfData_(&node);

return 0;

} // end of main function

void _init_(Matrix* nParam) {

int i, j; // index

// 2by3

for (i = 0; i < 2; i++) {

for (j = 0; j < 3; j++) {

(*nParam).MatOne[i][j] = 0;

}

}


// 3by4

for (i = 0; i < 3; i++) {

for (j = 0; j < 4; j++) {

(*nParam).MatTwo[i][j] = 0;

}

}


// 2by4

for (i = 0; i < 2; i++) {

for (j = 0; j < 4; j++) {

(*nParam).mulMat[i][j] = 0;

}

}

} // end of _init_ function


void _matValue_(Matrix* nParam) {

srand((unsigned)time(NULL));

int i, j; // index

// 2by3

for (i = 0; i < 2; i++) {

for (j = 0; j < 3; j++) {

(*nParam).MatOne[i][j] = rand() % 50 + 1;

}

}


// 3by4

for (i = 0; i < 3; i++) {

for (j = 0; j < 4; j++) {

(*nParam).MatTwo[i][j] = rand() % 50 + 1;

}

}

} // end of _matValue_ function 


void _matrixMul_(Matrix* nParam) {

int i, j, k;

int temp;

for (i = 0; i < 2; i++) {

for (k = 0; k < 4; k++) {

temp = 0x0;

for (j = 0; j < 3; j++) {

temp = temp + (*nParam).MatOne[i][j] * (*nParam).MatTwo[j][k];

}

(*nParam).mulMat[i][k] = temp;

}

}

} // end of _matrixMul_ function

void _printfData_(Matrix* nParam) {

int i, j;

for (i = 0; i < 2; i++) {

for (j = 0; j < 4; j++) {

printf("%02d", (*nParam).mulMat[i][j]);

if (j != 3) {

printf("  ");

}

}

printf("\n");

}

} // end of _printfData_ function