6 réponses
aminovic41
Messages postés
35
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
30 août 2013
20
21 févr. 2009 à 00:35
21 févr. 2009 à 00:35
l'allocation statique est très simple à faire, mais si jamais tu dois utiliser des pointeurs dans ton programme alors tu as prendre en compte que les valeurs de la matrices sont de la forme **; pas seulement *.
Mais une solution bien plus simple si tu as un probleme de mémoire ce qui peut probable (allocation dynamique)
voila du code::(c'est le constructeur de la classe matice)
matrice(int l,int c,int m)
{
int i;
M=(int**) malloc (sizeof(int*)*l);
for (i=0; i<l; i++)
Aj[i]=(double*) malloc (sizeof(int)*c);
}
amine
Mais une solution bien plus simple si tu as un probleme de mémoire ce qui peut probable (allocation dynamique)
voila du code::(c'est le constructeur de la classe matice)
matrice(int l,int c,int m)
{
int i;
M=(int**) malloc (sizeof(int*)*l);
for (i=0; i<l; i++)
Aj[i]=(double*) malloc (sizeof(int)*c);
}
amine
8 mars 2009 à 12:20
#include <stdlib.h>
// Allocation Dynamique du Tableau - Matrice5.c
int main(int argc, char *argv[])
{
int i,j,l,nbColA,nbColB, k, l2;
double **A;
double **B;
double **P;
////////////////////////A//////////////////////
printf("Donner le nombre des lignes de la matrice A\n");
scanf("%d",&l);
printf("Donner le nombre des colonnes de la matrice A\n");
scanf("%d",&nbColA);
A=(double **) malloc(l*sizeof(double*));
for (i=0; i<l; i++)
A[i]=(double *) malloc(nbColA*sizeof(double));
printf("Enter les elements de la matrice A\n");
for(i=0;i<l;i++)
for(j=0;j<nbColA;j++)
{
printf("Enter la valeur de A[%d][%d] ",i,j);
scanf("%lf",&A[i][j]);
printf("\n");
}
printf("\n===> Matrice A <===\n");
for (i=0;i<l;i++)
{
for(j=0;j<nbColA;j++)
printf("%lf ", A[i][j]);
printf("\n");
}
////////////////////////B//////////////////////
B=(double **) malloc(l*sizeof(double*));
l2=nbColA;
printf("le nombre des lignes de la matrice B est %d\n",l2);
printf("Donner le nombre des colonnes de la matrice B\n");
scanf("%d",&nbColB);
for (i=0; i<l2; i++)
B[i]=(double *) malloc(nbColB*sizeof(double));
printf("Enter les elements de la matrice B\n");
for(i=0;i<l2;i++)
{
for(j=0;j<nbColB;j++)
{
printf("Enter la valeur de B[%d][%d] ",i,j);
scanf("%lf",&B[i][j]);
printf("\n");
}
}
printf("\n===> Matrice B <===\n");
for (i=0;i<l2;i++)
{
for(j=0;j<nbColB;j++)
printf(" %lf ", B[i][j]);
printf("\n");
}
////////////////////////P//////////////////////
P=(double **) malloc(l*sizeof(double*));
for (i=0; i<l; i++)
P[i]=(double *) malloc(nbColA*sizeof(double));
/* la matrice résultante est la matrice P */
printf("Le produit des matrices A et B est la matrice P : \n");
for (i = 0; i < l; i++)
for (j = 0; j <nbColB; j++)
{
int k;
P[i][j] = 0;
for (k = 0; k < nbColA; k++)
{
P[i][j] = P[i][j] + A[i][k] * B[k][j];
}
}
printf("\n===> Matrice P <===\n");
for (i=0;i<l;i++)
{
for(j=0;j<nbColB;j++)
printf("%lf ", P[i][j]);
printf("\n");
}
return 0;
free(A);
free(B);
free (P);
}
8 mars 2009 à 12:27
Mettre du code après le return 0, ça sert strictement à rien.
De plus, tu n'as pas libéré toute la mémoire. Il y aura plein de zones dans le heap qui ne seront pas désallouées.
14 déc. 2015 à 21:34
14 déc. 2015 à 21:33