Piojolopez2406
14-05-2007, 18:35
ragazzi devo fare il prodotto righe per colonne di 2 matrici memorizzate in modo dinamico, ma incontro un problema quando vado a fare proprio il rpodotto, cioč nell'istruzione:
*(c+i*r+j)=*(c+i*r+j)+ *a(a+i*n+k) * *b(b+k*r+j);
mi dice che a e b non sono funzioni , dove ho sbagliato....
questo č il codice del programma:
#include <stdio.h>
#include <stdlib.h>
int *crea_matrice(int riga, int colonna);
void main()
{
int *a,*b,*c;
int n,m,q,r,i,j,k;
printf("scrivere valore riga di a: ");
scanf ("%d",&n);
printf("\nscrivere valore colonna di a: ");
scanf ("%d",&m);
printf("\nscrivere valore riga di b: ");
scanf ("%d",&q);
printf("\nscrivere valore colonna di b: ");
scanf ("%d",&r);
a=malloc(n*m*sizeof(int));
b=malloc(q*r*sizeof(int));
c=malloc(n*r*sizeof(int));
if(m==q)
{
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(a+i*m+j)=rand()%100/RAND_MAX;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(b+i*m+j)=rand()%100/RAND_MAX;
a=crea_matrice(n,m);
b=crea_matrice(q,r);
for (i=0;i<n;i++)
for (j=0;j<r;j++)
{
*(c+i*r+j)=0;
for(k=0;k<q;k++)
*(c+i*r+j)=*(c+i*r+j)+ *a(a+i*n+k) * *b(b+k*r+j);
}
printf("la matrice prodotto e'\n");
for (i=0;i<n;i++)
{
for (j=0;j<r;j++)
{
printf("%d ",*(c+i*r+j));
}
printf("\n");
}
}
else
printf("ERRORE");
}
*(c+i*r+j)=*(c+i*r+j)+ *a(a+i*n+k) * *b(b+k*r+j);
mi dice che a e b non sono funzioni , dove ho sbagliato....
questo č il codice del programma:
#include <stdio.h>
#include <stdlib.h>
int *crea_matrice(int riga, int colonna);
void main()
{
int *a,*b,*c;
int n,m,q,r,i,j,k;
printf("scrivere valore riga di a: ");
scanf ("%d",&n);
printf("\nscrivere valore colonna di a: ");
scanf ("%d",&m);
printf("\nscrivere valore riga di b: ");
scanf ("%d",&q);
printf("\nscrivere valore colonna di b: ");
scanf ("%d",&r);
a=malloc(n*m*sizeof(int));
b=malloc(q*r*sizeof(int));
c=malloc(n*r*sizeof(int));
if(m==q)
{
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(a+i*m+j)=rand()%100/RAND_MAX;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(b+i*m+j)=rand()%100/RAND_MAX;
a=crea_matrice(n,m);
b=crea_matrice(q,r);
for (i=0;i<n;i++)
for (j=0;j<r;j++)
{
*(c+i*r+j)=0;
for(k=0;k<q;k++)
*(c+i*r+j)=*(c+i*r+j)+ *a(a+i*n+k) * *b(b+k*r+j);
}
printf("la matrice prodotto e'\n");
for (i=0;i<n;i++)
{
for (j=0;j<r;j++)
{
printf("%d ",*(c+i*r+j));
}
printf("\n");
}
}
else
printf("ERRORE");
}