Mam taki problem. Mam program mnożący dwie macierze. Muszę do niego dopisać kilka warunków. Jeśli ktoś pomógłby mi napisać jeden z nich, to już bym sobie z resztą poradziła
Chodzi o to, że jeśli cała kolumna w macierzy B jest zerami, to ta sama kolumna w macierzy C również będzie zerami.
Kod: Zaznacz cały
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
int n,m,k,l;
int**A,**B,**C;
int i;
int j;
printf("Podaj n
");
scanf("%d",&n);
printf("podaj m
");
scanf("%d",&m);
printf("podaj k
");
scanf("%d",&k);
A=(int**)malloc(n*sizeof(int*)); //przydzielenie pamieci macierzy nxm
for(i=0;i<n;i++)
A[i]=(int*)malloc(m*sizeof(int));
B=(int**)malloc(m*sizeof(int*)); //przydzielenie pamieci macierzy mxk
for(j=0;j<m;j++)
B[j]=(int*)malloc(k*sizeof(int));
C=(int**)malloc(n*sizeof(int*)); //przydzielenie pamieci macierzy nxk
for(i=0;i<n;i++)
C[i]=(int*)malloc(k*sizeof(int));
printf("Podaje macierz nxm
");
for(i=0; i<n; i++) //wpisanie wartosci do macierzy nxm
for(j=0; j<m; j++)
{
printf("Podaj [%d][%d] element
",i,j);
scanf("%d",&A[i][j]);
}
printf("Podaj macierz mxk
");
for(j=0; j<m; j++) //wpisanie wartosci do macierzy mxk
for(l=0; l<k; l++)
{
printf("Podaj [%d][%d] element
",j,l);
scanf("%d",&B[j][l]);
}
for(i=0;i<n;i++) //kopiowanie
{
for(l=0;l<m;l++)
{
C[i][l]=0;
for(j=0;j<k;j++)
{
C[i][l]=C[i][l]+A[i][j]*B[j][l];
}
}
}
printf("Iloczyn macierzy nxm * mxk
");
for(i=0; i<n; i++) //wyswietlenie macierzy nxk
{
for(l=0; l<k; l++)
printf("%d ",C[i][l]); //w kazdym wierszu spacja
printf("
");
}
for(i=0;i<n;i++)
free(C[i]);
free(C);
getch();
A=NULL;
B=NULL;
return 0;
}