Ok donc je ne comprends pas comment écrire cette fonction il suffit de prendre un scalaire et de le multiplier par la matrice, mais je ne sais pas comment l'appeler ou quoi que ce soit .Comment écrire matrice mutiply en programmation C en utilisant des pointeurs
J'ai créé la matrice:
MX* mxCreate(unsigned int height, unsigned int width) {
int i = 0;
double** mxPtr;
mxPtr = (double**)malloc(sizeof(double*) * height);
ASSERT(mx, "Memory allocation failed");
for(i = 0; i < height; i++){
mxPtr[i] = (double *) malloc(sizeof(double) * width);
ASSERT(mx[i], "Memory allocaiton failed");
}
MX *mx = malloc(sizeof(MX));
ASSERT(mx, "Memory allocation failed");
mx->w = width;
mx->h = height;
mx->m = mxPtr;
return mx;
}
cependant comment multiplier dois-je scalaire, voici ce que j'ai jusqu'à présent:
MX* mxScalar(const MX* mx, double scalar) {
int i, j;
s = scalar;
for(i=0; i < h; i++)
{
for(j=0; j<w; i++)
{
mx[i][j] = s * m[i][j];
}
}
return mx;
}
grâce
Quel est le type de 'MX'? – kennytm
La boucle interne de votre multiplication incrémente i lorsqu'il doit incrémenter j, ce qui pourrait expliquer pourquoi il ne se comporte pas comme prévu. En outre, la taille devrait être lue de mx, bien sûr. – unwind
Vous devez également initialiser les valeurs dans le tableau - probablement à zéro (bien que zéro multiplié par un scalaire soit remarquablement similaire à zéro). –