Evo jedan primer. Nije narocito reprezentativan ali sta je tu je.
Code:
#include <stdio.h>
#include <stdlib.h>
typedef struct matrica
{
unsigned short int brRed;
unsigned short int brKol;
int **mat;
} Matrica;
void kreirajMatricu(Matrica &m)
{
printf("Unesite broj vrsta: ");
scanf("%hu",&m.brRed);
printf("Unesite broj kolona: ");
scanf("%hu",&m.brKol);
m.mat=(int **)malloc(m.brRed*sizeof(int *));
for (unsigned int i=0;i<m.brRed;++i)
{
m.mat[i]=(int *)malloc(m.brKol*sizeof(int));
for (unsigned int j=0;j<m.brKol;++j)
{
printf("Mat[%u][%u]=",i+1,j+1);
scanf("%i",&m.mat[i][j]);
}
}
}
void ispisiMatricu(Matrica const m)
{
printf("\n");
for (unsigned int i=0;i<m.brRed;printf("\n"),i++)
for (unsigned int j=0;j<m.brKol;++j)
printf("%i ",m.mat[i][j]);
}
void pomnoziMatrice(Matrica x,Matrica y,Matrica &z)
{
unsigned int i,j,k;
if (x.brKol==y.brRed)
{
z.brRed=x.brRed;
z.brKol=y.brKol;
z.mat=(int **)malloc(z.brRed*sizeof(int *));
for (i=0;i<z.brRed;i++)
{
z.mat[i]=(int *)malloc(z.brKol*sizeof(int));
for (j=0;j<z.brKol;j++)
{
z.mat[i][j]=0;
for (k=0;k<y.brRed;k++)
z.mat[i][j]+=x.mat[i][k]*y.mat[k][j];
}
}
}
else
{
printf("Matrice se ne mogu pomnoziti");
z.brKol=z.brRed=0;
z.mat=NULL;
}
}
void unistiMatricu(Matrica &w)
{
for (unsigned int i=0;i<w.brRed;i++)
free(w.mat[i]);
free(w.mat);
}
void main()
{
Matrica a,b,c;
kreirajMatricu(a);
kreirajMatricu(b);
pomnoziMatrice(a,b,c);
ispisiMatricu(c);
unistiMatricu(a);
unistiMatricu(b);
unistiMatricu(c);
}