/*programa que multiplica dues matrius int amb punters*/

#include <stdio.h>


main()
	{
	
	int *m1,*m2,*m3;
	int fil1,col1,fil2,col2,fil3,col3,aux,n,s,m,i;

/*Dimensionem les matrius*/	
	do{
		printf("\nEntreu el nombre de files i columnes de la primera matriu:\n");
		scanf("%d %d",&fil1,&col1);
		printf("Entreu el nombre de files i columnes de la segona matriu:\n");
		scanf("%d %d",&fil2,&col2);
		if(fil1 != col2)printf("El nombre de files de la primera i columnes de la segona han de coincidir.\n");
	}while(fil1 != col2);

	fil3 = fil1;
	col3 = col2;

	m1 = malloc(fil1*col1*sizeof(int));
	m2 = malloc(fil2*col2*sizeof(int));
	m3 = malloc(fil3*col3*sizeof(int));

		
/*Entrem els valors a les matrius*/
	printf("Entreu els %d valors de la primera matriu(fil. i col.):\n",fil1*col1);
	for(n=0;n<fil1*col1;n++){
			scanf("%d",m1);
			m1++;		}
	printf("Entreu els %d valors de la segona matriu(fil. i col.):\n",fil1*col1);
	for(n=0;n<fil1*col1;n++){
			scanf("%d",m2);
			m2++;		}

/*Inicialitzaciķ de la tercera matriu i tornada a la primera adreįa*/
	for(n=0;n<fil3*col3;n++){
		*m3=0;
		m3++;		}

	m1 -= fil1 * col1;
	m2 -= fil2 * col2;
	m3 -= fil3 * col3;
	
/*Cālcul de la tercera matriu*/
	for(m=0,m2-=1,m1-=col1;m<col3;m++)
		{
		m1+=col1;
		for(n=0;n<fil1;n++){
			m2+=1;
			for(s=0;s<col1;s++){
				*m3=*m3+*m1**m2;
				m1++;
				m2+=col2;	}
			m1-=col1;
			m2-=fil2*col2;
			m3++;		}	
		m2-=col2;	
		}
	
	printf("\nI la matriu resutant es:");
	m3-=fil3*col3;		
	for(n=0;n<col3;n++){
			printf("\n");
			for(m=0;m<fil3;m++){
				printf("\t%d",*m3);
				m3++;		}
			}
	}