[C] Comment faire une fusion de plusieurs tableau de donné?

Comment faire une fusion de plusieurs tableau de donné? [C] - Programmation

Marsh Posté le 12-03-2002 à 18:19:13    

Alors voilà le problème: je possède n tableau de unsigned long  de différentes tailles, et je souhaiterais pouvoir créer un seul grand tableau qui regrouperait toutes les données des petits.
 
Par exemple:
 
_ 1er tableau: [0], [1], [2]
_ 2ème tableau: [0'], [1']
 
_ tableau final: [0], [1], [2], [0'], [1']
 
Je sais que je pourrais facilement faire une copie en faisant: final[0] = tableau1[0]; final[1] = tableau1[1]; ... final[4] = tableau2[1]; mais j'aimerais quelque chose qui permettent de transfèrer tout un tableau dans le tableau final à une position désirée.
 
Voilà, j'espère que vous comprendrez l'idée car je suis souvent assez confus :D
 
Merci.

 

[jfdsdjhfuetppo]--Message édité par Alload--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 12-03-2002 à 18:19:13   

Reply

Marsh Posté le 12-03-2002 à 22:24:15    

Il suffirait de jouer sur les indices de parcours de tes tableaux:
 

Code :
  1. void array_copy(unsigned long * src, unsigned long * dest, int offset, int length)
  2. {
  3.   int i;
  4.   int j;
  5.   for(i = 0, j = offset; i != length; i++, j++)
  6.   {
  7.     dest[j] = src[i];
  8.   }
  9. }


 
Reste à réutiliser cette fonction pour copier tes tableaux dans un seul.

Reply

Marsh Posté le 12-03-2002 à 22:47:44    

Alload a écrit a écrit :

Alors voilà le problème: je possède n tableau de unsigned long  de différentes tailles, et je souhaiterais pouvoir créer un seul grand tableau qui regrouperait toutes les données des petits.
 
Par exemple:
 
_ 1er tableau: [0], [1], [2]
_ 2ème tableau: [0'], [1']
 
_ tableau final: [0], [1], [2], [0'], [1']
 
Je sais que je pourrais facilement faire une copie en faisant: final[0] = tableau1[0]; final[1] = tableau1[1]; ... final[4] = tableau2[1]; mais j'aimerais quelque chose qui permettent de transfèrer tout un tableau dans le tableau final à une position désirée.
 
Voilà, j'espère que vous comprendrez l'idée car je suis souvent assez confus :D
 
Merci.  
 
 




Euh, pas clair ton histoire:
_ 1er tableau: [a], [b], [c]==> taille: a*b*c
_ 2ème tableau: [e], [f] ==> taille: e*f
nom d'elements total pour les deux tableaux: a*b*c + e*f
 tableau final: [a], [b], [c], [e], [f]==> taille a*b*c*e*f ce qui est a priori bien plus grand que le nombre d'elements de tes deux tableaux initiaux.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-03-2002 à 22:58:40    

Ce que je voulais dire par [0], ..., [1'] c'était l'index des éléments d'un tableau, pas sa taille.

Reply

Marsh Posté le 12-03-2002 à 23:09:23    

1er tableau: [a], [b], [c]
c'est un tableau de dimension 3 ou pas pour toi? parce que c'est assez confus ce que tu dis.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 13-03-2002 à 00:42:50    

Pour [1, 2, 3], [4, 5] et [6, 7, 0] tu veux obtenir [1, 2, 3, 4, 5, 6, 7, 0], c'est ça?

Reply

Marsh Posté le 13-03-2002 à 07:04:53    

Oui. Pour le moment j'utilise la même méthode que Krueger, mais je me demandais si il n'en existait pas une plus rapide.
 
J'ai pensé à ça:
int  *final;
int tab1[5];
int tab2[4];
 
final = new int[5 + 4];
CopyMemory(final, &tab1, sizeof(tab1));
final += 5;
CopyMemory(final, &tab2, sizeof(tab2));
 
Est-ce que ça peut marcher?

Reply

Marsh Posté le 13-03-2002 à 07:32:07    

Ah j'ai pigé ce que tu veux faire.
Un truc comme ceci, sans doute:

Code :
  1. int  *final;
  2. int tab1[5];
  3. int tab2[4];
  4. final = (int *) malloc(sizeof(tab1)+sizeof(tab2));
  5. memcopy(final, tab1, sizeof(tab1));
  6. memcopy(final+(sizeof(tab1)/sizeof(int)), tab2, sizeof(tab2));
  7. ....
  8. free(final);


A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 13-03-2002 à 08:37:34    

:jap:
 
Mais sizeof(tab1) ne retourne pas plutôt la taille d'un pointeur de type int *? :confused:

Reply

Sujets relatifs:

Leave a Replay

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