It's HORRIBLE to see some C source into a word file!!!
It should be illegal !!!!
I don't have time to check ur code, sorry!!! I'm tired! but I'm sure that my code for matrix multiplication will help you
Code:
/* Ex2 BianConiglio */
// I had no time to implement the command line version
// of the program, anyway I should use argv[i] to set
// rows and columns, the rest will be the same.
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
// matrix definitions
#define RIGAA 2 // row of A
#define COLA 3 // col of A
#define RIGAB 3 // row of B
#define COLB 4 // col of B
#define MAX_MATRIX_VALUE 5 // max number in a matrix cell
// global variables, matrixes
int A [RIGAA][COLA];
int B [RIGAB][COLB];
int C [RIGAA][COLB];
void GenerateMatrixes ();
void GenerateMatrix (int* matrix, int row, int col);
void MultiplyaMatrix ();
void PrintMatrix (char* name, int* matrix, int row, int col);
void CleanScreen ();
int main (int argc, char* argv[]) {
int ch = 0; //user choice
CleanScreen ();
printf ("************************************\n");
printf ("** Matrix Multiplication **\n");
printf ("************************************\n\n");
GenerateMatrixes ();
while (ch != 5) { // loop until exit
ch = 0; // reinitialization
printf ("Regenerate matrixes : 1 \n");
printf ("Multiplicate : 2 \n");
printf ("Print matrixes : 3 \n");
printf ("Clean Screen : 4 \n");
printf ("Exit : 5 \n");
printf ("Choose command : ");
scanf ("%d", &ch);
switch (ch) {
case 1: GenerateMatrixes ();
break;
case 2: MultiplyaMatrix ();
break;
case 3: PrintMatrix ("A", (int*)A, RIGAA, COLA);
PrintMatrix ("B", (int*)B, RIGAB, COLB);
break;
case 4: CleanScreen ();
break;
default: CleanScreen (); // default behavior
break;
};
}
return 0;
}
// random generation and population of matrix values
void GenerateMatrixes () {
// generate A B
GenerateMatrix ((int*)A, RIGAA, COLA);
GenerateMatrix ((int*)B, RIGAB, COLB);
// print matrixes
PrintMatrix ("A", (int*)A, RIGAA, COLA);
PrintMatrix ("B", (int*)B, RIGAB, COLB);
}
//Print a matrix
void PrintMatrix (char* name, int* matrix, int row, int col) {
int i, j; // indexes
printf ("\nMatrix %s: \n\n", name);
for (i = 0; i < row; i++) { // rows
for (j = 0; j < col; j++) { // col
printf ("%d ",matrix[(i*col)+j]); // print item
}
printf ("\n");
}
printf ("\n");
}
//Matrix multiplication
void MultiplyaMatrix () {
int i, j, m; // indexes
for (i = 0; i < RIGAA; i++)
for (j = 0; j < COLB; j++) {
C[i][j] = 0; // initialization of the new matrix
for (m = 0; m < COLA; m++)
C[i][j] += (A[i][m] * B[m][j]);
}
PrintMatrix ("C", (int*)C, RIGAA, COLB);
}
// Generate random matrix
void GenerateMatrix (int* matrix, int row, int col) {
int i, j = 0; //indexes
for (i = 0; i < row; i++) // row
for (j = 0; j < col; j++) //col
matrix[(i*col)+j] = rand() % MAX_MATRIX_VALUE; // populate
}
void CleanScreen () {
system ("clear"); // unix system
}
check it out!