행렬
# 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