[C] Matrice Dynamique URGENT svp ...

Matrice Dynamique URGENT svp ... [C] - Programmation

Marsh Posté le 21-01-2002 à 22:26:39    

:hello: bonsoir !!
g un gros probleme pour un devoir a rendre demain : je n'arrive pas a faire une matrice dynamique.
je fais un double malloc :
 
tab_mat=(int **)malloc(matY*sizeof((int *)malloc(matX*sizeof (int))));
 
mais qd je veut tout initialiser ca fait une erreur memoire et je sais pas pq ...
ca donne :
 
 printf("DEBUT INIT\n" );
  for(i=1 ; i<matY ; i++){
    for(j=1 ; j<matX ; j++){
      tab_mat[i][j]=0;
      printf(" %d ",j);
    }
  }
  printf("FIN INIT\n" );
 
 
il y a un truc qui va pas mais ou ??
 
merci d'avance !!  :jap:


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 21-01-2002 à 22:26:39   

Reply

Marsh Posté le 21-01-2002 à 22:30:26    

en fait il plante au premier i++  
 
il n'y aurrais en fait qu'une seule dimenssion ??


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 21-01-2002 à 22:31:20    

Code :
  1. tab_mat=(int **)malloc(matY*sizeof((int *)malloc(matX*sizeof (int))));


 
t sur que c'est du C ce truc :D

 

[edtdd]--Message édité par deathsharp--[/edtdd]


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 21-01-2002 à 22:32:52    

vi vi c du C !
 
ca plante aussi qd les indices i et j commencent a 0 ... etrange ...


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 21-01-2002 à 22:34:38    

sinon c peut etre pas comme ca qu'il faut creer une matrice dynamique ... je suis pas sur ...


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 21-01-2002 à 22:44:28    

indice: un seul malloc, pas deux c portenawak
pour ca que je te demandais si c'etait bien du C
 
regarde bien: tu alloc un tableau de x elements int ( matX ) puis tu alloue y elements ( matY ) fois la taille du pointeur de l'autre tab...


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 21-01-2002 à 22:45:31    

sans compter les fuites de mem parce que jsuis sur que tu desalloue pas ces deux block de memoire...


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 21-01-2002 à 22:47:07    

oui c bien ca ... je pensait que ca faisait des tableaux dont le premier element de chaque etait contenu dans un autre tableau, ce qui faisait un matrice ...apparement non  
 
 :cry:


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 21-01-2002 à 22:48:07    

si si je les dealloue qd meme .. mais c vrai que faut faire gaffe pq ca part vite !!


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 21-01-2002 à 22:50:38    

en fait je vais faire juste un tableau .. ca serra + simple et ca doit pouvoir marcher ...


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 21-01-2002 à 22:50:38   

Reply

Marsh Posté le 22-01-2002 à 09:33:08    

int i;   // compteur
int l,c; // nombre de lignes et colonnes
int** t=(int**)NULL;
 
t=(int**)malloc(sizeof(int*)*l);
for (i=0;i<l;i++) t[i]=(int*)malloc(sizeof(int)*c);
 
et aprés ca doit marcher.

Reply

Marsh Posté le 22-01-2002 à 10:08:22    

a mon avis , ca ca marche :
 

DarkOli a écrit a écrit :

int i;   // compteur
int l,c; // nombre de lignes et colonnes
int** t=(int**)NULL;
 
t=(int**)malloc(sizeof(int*)*l);
for (i=0;i<l;i++) t[i]=(int*)malloc(sizeof(int)*c);
 
et aprés ca doit marcher.  




---------------

Reply

Marsh Posté le 22-01-2002 à 21:34:15    

N'oublie pas de vérifier si malloc a bien alloué ta mémoire pour être propre... Et libérer cette mémoire une fois inutilisée en passant. :)


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed