Se connecter avec
S'enregistrer | Connectez-vous
Votre question

Tableau dynamique impossible a remplir

Tags :
  • C / C++ / Java
  • Switchs
  • Programmation
Dernière réponse : dans Programmation
Partagez
7 Janvier 2011 19:31:39

Bonsoir !
tout d'abord voici le code ayant un souci ...

dans le main j'appelle une fonction de cette maniere :
  1. int** rempliAuto(int **tab, int t[26][2]);
  2.  
  3. int main()
  4. {
  5. int ** tab;
  6. int t[26][2] = {0};
  7. int a;
  8. int i,n,j,k=0,l=1,m;
  9.  
  10. tab = (int**)malloc(26*sizeof(int*));
  11.  
  12. printf("Choisissez le mode de remplissage du tableau : \n");
  13. printf("1: Manuel\n2: Automatique\n --> ");
  14. scanf("%d",&a);
  15. fflush(stdin);
  16.  
  17. switch(a)
  18. {
  19. case 1:
  20. break;
  21.  
  22. case 2:
  23. tab = rempliAuto(tab,t);
  24. break;
  25.  
  26. default:
  27. break;
  28. }
  29. return 0;
  30. }


voici maintenant le code de cette fonction :
  1. int** rempliAuto(int **tab, int t[26][2])
  2. {
  3. int * ref;
  4. int i,n,j,k,l=1,m, z;
  5. int * p;
  6.  
  7. srand(time(NULL));
  8.  
  9. ref = (int*)malloc(sizeof(int));
  10.  
  11. for(i=0; i<26; i++)
  12. {
  13. t[i][0] = i;
  14. printf("\nPassage numero : %d", i);
  15. n = 1+(rand()%4);
  16.  
  17. printf("\n n vaut %d",n);
  18. t[i][1] = n;
  19.  
  20. tab[i] = (int*)malloc(n*sizeof(int));
  21.  
  22. for(j=0; j<n; j++)
  23. {
  24.  
  25. p = realloc(ref,(sizeof(ref)+sizeof(int)));
  26. do
  27. {
  28. z = 0;
  29. k = 1+(rand()%104);
  30. printf("\n k vaut %d",k);
  31. for(m=0; m<l; m++)
  32. {
  33. if(k == p[m])
  34. {
  35. z = 1;
  36. printf("\n k est deja util");
  37. }
  38. }
  39. }
  40. while(z == 1);
  41.  
  42. p[l-1] = k;
  43. l++;
  44. ref = p;
  45. printf("\n i vaut %d et j vau %d",i,j);
  46. tab[i][j] = k;
  47.  
  48. }
  49. }
  50. printf("\n sortie 1\n");
  51. free(p);
  52. free(ref);
  53. return tab;
  54. }


Deux cas s'offre à moi :
-Soit je ne met pas l'instruction tab[j] = k; , dans ce cas la fonction ne pose pas de problème, mais le programme plante dans le main lorsque je tente d'afficher les valeurs du tableau.

-Soit cette instruction est présente et le programme plante à un moment dans la fonction, généralement quand i atteint 20 21 22.

Quelqu'un aurait-il une solution à me proposer ?

Merci d'avance =)

Autres pages sur : tableau dynamique impossible remplir

7 Janvier 2011 19:45:07

Je suis présentement en train de finir mon cours de C sharp, peut tu m'expliquer plus précisément quesque tu veut faire avec cette fonction ?
Et sa ici c'est suposé faire quoi ?
# srand(time(NULL));
#
# ref = (int*)malloc(sizeof(int));
m
0
l
7 Janvier 2011 21:58:55

ben avec srand j'initialise le compteur aléatoire, et avec la deuxieme ligne je fais une alloc dynamique pour ref
m
0
l