#include #include typedef struct Macierz { int x,y; int *wiersz; int **tab; }*macierz; macierz make(void) { int i,j; macierz m; m=malloc(sizeof(struct Macierz)); printf("podaj liczbe wierszy : "); scanf("%d",&m->x); printf("podaj liczbe kolumn : "); scanf("%d",&m->y); m->tab=malloc((m->x)*sizeof(int*)); for(i=0;i<(m->x);i++) { m->wiersz=malloc((m->y)*sizeof(int)); for(j=0;j<(m->y);j++) { m->wiersz[j]=rand()%10; } m->tab[i]=m->wiersz; } return m; } void pisz(macierz m) { int i,j; for(i=0;i<(m->x);i++) { for(j=0;j<(m->y);j++) printf("[%3d]",m->tab[i][j]); printf("\n"); } printf("\n"); } macierz dodaj(macierz m, macierz n) { int i,j; macierz wy; wy=malloc(sizeof(struct Macierz)); wy->tab=malloc((m->x)*sizeof(int*)); wy->x=m->x; wy->y=m->y; for(i=0;i<(m->x);i++) { wy->wiersz=malloc((m->y)*sizeof(int)); wy->tab[i]=wy->wiersz; } for(i=0;ix;i++) for(j=0;jy;j++) wy->tab[i][j]=(m->tab[i][j])+(n->tab[i][j]); return wy; } macierz mnoz(macierz m, macierz n) { int i,j,k,l; macierz wy; wy=malloc(sizeof(struct Macierz)); wy->tab=malloc((m->x)*sizeof(int*)); wy->x=m->x; wy->y=n->y; for(i=0;i<(m->x);i++) { wy->wiersz=malloc((n->y)*sizeof(int)); wy->tab[i]=wy->wiersz; } for(i=0;ix;i++) for(j=0;jy;j++) { wy->tab[i][j]=0; for(k=0;ky;k++) wy->tab[i][j]+=(m->tab[i][k])*(n->tab[k][j]); } return wy; } macierz transp(macierz m) { int i,j; macierz wy; wy=malloc(sizeof(struct Macierz)); wy->tab=malloc((m->y)*sizeof(int*)); wy->x=m->y; wy->y=m->x; for(i=0;i<(m->y);i++) { wy->wiersz=malloc((m->x)*sizeof(int)); wy->tab[i]=wy->wiersz; } for(i=0;ix;i++) for(j=0;jy;j++) wy->tab[j][i]=m->tab[i][j]; return wy; } main() { int i,j; macierz m,n,dod,mn,trm,trn; m=make(); n=make(); printf("macierz M\n");pisz(m); printf("macierz N\n");pisz(n); if((m->x==n->x)&&(m->y==n->y)) { dod=dodaj(m,n); printf("DODAWANIE M+N\n"); pisz(dod); } else printf("dodawanie niewykonalne\n"); trm=transp(m); printf("TRANSPONOWANIE M\n");pisz(trm); trn=transp(n); printf("TRANSPONOWANIE N\n");pisz(trn); if(m->y==n->x) { mn=mnoz(m,n); printf("MNOZENIE MxN\n"); pisz(mn); } else printf("mnozenie niewykonalne\n"); getch(); }