Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1671 connectés 

  FORUM HardWare.fr
  Programmation

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°111196
Alload
Posté le 12-03-2002 à 18:19:13  profilanswer
 

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]

mood
Publicité
Posté le 12-03-2002 à 18:19:13  profilanswer
 

n°111367
Krueger
tout salaire demande dutravail
Posté le 12-03-2002 à 22:24:15  profilanswer
 

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.

n°111369
gilou
Modérateur
Modzilla
Posté le 12-03-2002 à 22:47:44  profilanswer
 

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é!  --
n°111373
Alload
Posté le 12-03-2002 à 22:58:40  profilanswer
 

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

n°111375
gilou
Modérateur
Modzilla
Posté le 12-03-2002 à 23:09:23  profilanswer
 

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é!  --
n°111384
Krueger
tout salaire demande dutravail
Posté le 13-03-2002 à 00:42:50  profilanswer
 

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

n°111393
Alload
Posté le 13-03-2002 à 07:04:53  profilanswer
 

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?

n°111398
gilou
Modérateur
Modzilla
Posté le 13-03-2002 à 07:32:07  profilanswer
 

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é!  --
n°111406
Krueger
tout salaire demande dutravail
Posté le 13-03-2002 à 08:37:34  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

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

 

Sujets relatifs
Comment faire un tableau en html ?Comment créer un tableau d'entiers sous MySQL ??????
[Kylix] avoir plusieurs formes...[Java][HTML] transmission d'un tableau entre servlet et JSP
[ P H P ] + MySQL Couper un ARTICLE en plusieurs pageCOBOL deplacer dun fichier a un tableau
[JAVA]: [Thread]: Comment relever plusieurs moniteurs lors d'un wait()[HTML] fond d'un tableau (sans css)
[MySQL] Plusieurs questions[Java] passage d'un tableau dans DLL et retour ? c'est encore moi!
Plus de sujets relatifs à : [C] Comment faire une fusion de plusieurs tableau de donné?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR