// http://www.vitutor.com/algebra/matrices/producto.html
#include <stdio.h>

#define MAX_F	4
#define MAX_C	4

void imprimir_matriu(int v[MAX_F][MAX_C], int num_f, int num_c) {
	int f, c;
	for(f=0;f<num_f;f++) {
		printf("(");
		for(c=0;c<num_c;c++) {
			printf("%2d ", v[f][c]);
		}
		printf(")\n");
	}
}

int main() {
	int m1[MAX_F][MAX_C]={{2,1},{0,3},{1,0},{3,4}}, f1=4, c1=2;
	int m2[MAX_F][MAX_C]={{1,0,0},{3,4,2}}, f2=2, c2=3;
	int m3[MAX_F][MAX_C], f3=f1, c3=c2;
	int f, c, i;

	if (c1 == f2) {
		for(f=0;f<f3;f++) {
			for(c=0;c<c3;c++) {
				m3[f][c] = 0;
				for(i=0;i<c1;i++) {
					m3[f][c] += m1[f][i] * m2[i][c];
				}
			}
		}
		imprimir_matriu(m1,f1,c1);
		printf("\n X\n\n");
		imprimir_matriu(m2,f2,c2);
		printf("\n =\n\n");
		imprimir_matriu(m3,f3,c3);
	} else {
		printf("ERROR!\n");
	}
}

