program nie chce mi mnożyć macierzy i nie wiem czy namieszałem coś w pętlach czy wszystko mam źle?
Kod: Zaznacz cały
#include<stdio.h>
int main()
{
int i,j,b,a,c;
int **macierz;
printf(" Pierwsza macierz (A)
");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>> Podaj jej wymiary <<<<<<<<<<<<<<<<<<<<<<<<<<<<
");
printf("Podaj liczbe kolumn
");
scanf("%i", &a);
printf("Podaj liczbe wierszy
");
scanf("%i", &b);
printf("Podaj %d wartosci
", a*b);
macierz=(int**)malloc(sizeof(int*)*b); /*Dynamiczne wprowadzanie macierzy*/
for(i=0;i<b;i++)
macierz[i]=(int*)malloc(sizeof(int)*a);
for(i=0;i<b;i++)
for(j=0;j<a;j++)
{
printf("Podaj liczbe ");
scanf("%d", &macierz[i][j]);
}
printf(" Pierwsza macierz (A):
");
/* wypisuje tablice */
for(i = 0 ; i < b ; i++)
{
for(j = 0 ; j < a ; j++)
{
printf("%d ", macierz[i][j]) ;
}
printf("
") ; /* oddziela każdy nowy wiersz */
}
int x,y,q,w;
int **macierz2;
printf(" Druga macierz (B)
");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>> Podaj jej wymiary <<<<<<<<<<<<<<<<<<<<<<<<<<<<
");
printf("Podaj liczbe kolumn
");
scanf("%d",&w);
printf("Podaj liczbe wierszy
");
scanf("%d",&q);
printf("Podaj %d wartosci
", q*w);
macierz2=(int**)malloc(sizeof(int)*q);/*Dynamiczne wprowadzanie macierzy*/
for(x=0;x<q;x++)
macierz2[x]=(int*)malloc(sizeof(int)*w);
for(x=0;x<q;x++)
for(y=0;y<w;y++)
{
printf("Podaj liczbe ");
scanf("%d",&macierz2[x][y]);
}
printf(" Druga macierz (B):
");
/*Wypisuje drugą tablice*/
for(x=0;x<q;x++)
{
for(y=0;y<w;y++)
{
printf("%d ", macierz2[x][y]);
}
printf("
");
}
if ((a==w)&(b==q))
{
printf("Suma macierzy
");
int wiersz,kolumna, w1=b,k1=a;
int **macierz3;
macierz3=(int**)malloc(sizeof(int)*k1);
for(wiersz=0;wiersz<w1;wiersz++)
macierz3[wiersz]=(int*)malloc(sizeof(int)*w1);
for(kolumna=0;kolumna<k1;kolumna++)
for(wiersz=0;wiersz<w1;wiersz++)
{
macierz3[wiersz][kolumna]=macierz2[wiersz][kolumna]+macierz[wiersz][kolumna];
}
for(wiersz=0;wiersz<w1;wiersz++)
{
for(kolumna=0;kolumna<k1;kolumna++)
{
printf("%d ", macierz3[wiersz][kolumna]);
}
printf("
");
}
}
else
{
printf("Nie mozna dodac macierzy!!!!
LICZE ILOCZYN MACIERZY
");
{
if(a==q)
{
printf("Iloczyn wykonywalny
Wynik ilorazu obu macierzy to
");
int wiersz2, kolumna2, w2=b, k2=a, v, g;
int **macierz4;
macierz4=(int**)malloc(sizeof(int)*k2);/*Dynamiczne wprowadzanie macierzy*/
for(wiersz2=0;wiersz2<w2;wiersz2++)
macierz4[wiersz2]=(int*)malloc(sizeof(int)*w2);
for(kolumna2=0;kolumna2<k2;kolumna2++)
for(wiersz2=0;wiersz2<w2;wiersz2++)
macierz4[wiersz2][kolumna2]=0;
for(v=0;v<x;v++)
for(g=0;g<y;g++)
{
macierz4[wiersz2][kolumna2]=macierz4[wiersz2][kolumna2]+macierz2[wiersz2][g]*macierz[v][kolumna2];
}
for(wiersz2=0;wiersz2<w2;wiersz2++)
for(kolumna2=0;kolumna2<k2;kolumna2++)
printf("%d", macierz4[wiersz2][kolumna2]);
printf("
");
}
else
{
printf("KONIEC");
}
}
}
getch();
}