Witam serdecznie. Mam do napisania mnożenie macierzy przy pomocy wskaźników... i napisałem takie coś:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
int i,j,k;
int m = 4;
int n = 3;
int r = 5;
srand(time(NULL));
int *mac1 = malloc(m*n*sizeof(int));
int *mac2 = malloc(n*r*sizeof(int));
int *macw = malloc(m*r*sizeof(int));
//--------------------------------
for(i=0;i<m;i++)
{
for(j=0;j<n; j++)
{
*mac1=1+rand()%10;
}
}
printf ("Macierz 1:\n");
for(i=0; i<m;i++)
{
for(j=0; j<n; j++)
{
printf("%3.d ", *mac1+i*n+j);
}
printf("\n");
}
printf("\n");
//----------------------------------
for(i=0;i<n;i++)
{
for(j=0;j<r; j++)
{
*mac2=1+rand()%10;
}
}
printf ("Macierz 2:\n");
for(i=0; i<n;i++)
{
for(j=0; j<r; j++)
{
printf("%3.d ", *mac2+i*r+j);
}
printf("\n");
}
printf("\n");
//----------------------------------
for(i=0; i<m; i++)
{
for(j=0; j<r; j++)
{
for(k=0; k<n; k++)
{
*(macw+i*r+j) += *(mac1+i*n+k)* *(mac2+k*r +j);
}
}
}
for(i=0; i<m; i++)
{
for(j=0; j<r; j++)
{
printf("%5.d ", *(macw+i*r+j));
}
printf("\n");
}
free(mac1);
free(mac2);
free(macw);
system("PAUSE");
return 0;
}
i od dobrych kilku godzin próbuję znaleźć błąd w wymnażaniu tych macierzy i nie mogę go znaleźć...
bardzo proszę o jakieś wskazówki co jest źle...