Programmation en c
walamefteh
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
le père -
le père -
Bonjour,
salut j'ai un exercice qui demande d'écrire un programme qui afffiche une matrice en trois dimensions
j'ai essayé et j'éspére que tu peux me corriger.voila mon travail
#include<stdio.h>
#include<stdlib.h>
void main()
{ int *** allocation (int l,int c,int z);
int l,c,z;
printf("Donner le nombre de lignes:");
scanf("%i",&l);
printf("Donner le nombre de lignes:");
scanf("%i",&c);
printf("Donner le nombre de lignes:");
scanf("%i",&z);
*** allocation (l,c,z);
}
int *** allocation (int l,int c ,int z)
{
int ***t,i;
t=(int***)malloc(l*sizeof(int **));
for(i=0;i<l;i++)
**(t+i)=(int*)(malloc(c*sizeof(int*)));
for(i=0;i<c;i++)
*(t+i)=(int**)malloc(z* sizeof(int));
return t;
}
salut j'ai un exercice qui demande d'écrire un programme qui afffiche une matrice en trois dimensions
j'ai essayé et j'éspére que tu peux me corriger.voila mon travail
#include<stdio.h>
#include<stdlib.h>
void main()
{ int *** allocation (int l,int c,int z);
int l,c,z;
printf("Donner le nombre de lignes:");
scanf("%i",&l);
printf("Donner le nombre de lignes:");
scanf("%i",&c);
printf("Donner le nombre de lignes:");
scanf("%i",&z);
*** allocation (l,c,z);
}
int *** allocation (int l,int c ,int z)
{
int ***t,i;
t=(int***)malloc(l*sizeof(int **));
for(i=0;i<l;i++)
**(t+i)=(int*)(malloc(c*sizeof(int*)));
for(i=0;i<c;i++)
*(t+i)=(int**)malloc(z* sizeof(int));
return t;
}
A voir également:
- Programmation en c
- Application de programmation - Guide
- Mettre en veille un programme - Guide
- Programmer en basic sous windows 10 - Télécharger - Édition & Programmation
- Un autre programme est en cours d'installation - Forum Windows 10
- Programmation envoi sms - Guide
1 réponse
Bonjour
*** allocation (l,c,z);
Je ne crois pas que cette ligne veuille dire grand chose. Je suppose que tu voulias faire :
int *** tableau;
tableau =allocation (l,c,z);
Mais pourqui te compliquer l'existence ? Un seul tableau = malloc (l*c*z,sizeof(int)); fait l'affaire, à condition d'accéder aux éléments du tableau par tableau[ligne+c*(colonne+z*couche)]. La désallocation de la mémoire est évidente.
Si tu tiens à tes pointeurs de pointeurs de pointeurs, ta fonction d'allocation me semble bien bizarre. Je ferais plutôt
et là tu accèdes aux éléments par tableau[ligne][colonne][couche], ce qui est bien sûr plus agréable
Mais tu vas t'arracher les cheveux (ou re-poster ici ;-) ) avant de faire une désallocation correcte !
*** allocation (l,c,z);
Je ne crois pas que cette ligne veuille dire grand chose. Je suppose que tu voulias faire :
int *** tableau;
tableau =allocation (l,c,z);
Mais pourqui te compliquer l'existence ? Un seul tableau = malloc (l*c*z,sizeof(int)); fait l'affaire, à condition d'accéder aux éléments du tableau par tableau[ligne+c*(colonne+z*couche)]. La désallocation de la mémoire est évidente.
Si tu tiens à tes pointeurs de pointeurs de pointeurs, ta fonction d'allocation me semble bien bizarre. Je ferais plutôt
int *** allocation (int l,int c ,int z) { int ***t,i,j; t=(int***)malloc(l*sizeof(int **)); for(i=0;i<l;i++) { *(t+i)=(int**)(malloc(c*sizeof(int*))); for (j=0; j<c;j++) *(*(t+i)+j)=(int*) malloc(z*sizeof(int)); } // for i return t; } // allocation
et là tu accèdes aux éléments par tableau[ligne][colonne][couche], ce qui est bien sûr plus agréable
Mais tu vas t'arracher les cheveux (ou re-poster ici ;-) ) avant de faire une désallocation correcte !