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

  FORUM HardWare.fr
  Programmation
  C

  Réduction d'un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Réduction d'un tableau

n°1528613
lasvegasth​eking
Posté le 14-03-2007 à 19:28:19  profilanswer
 

Bonjour,
 
j'ai un tableau de 150 lignes et de 150 colonnes.
Vu comme une image : (x,y) indique les coordonnées
coin supérieur gauche : (0,0)
coin supérieur droit : (150,0)
coin inférieur droit : (150,150)
coin inférieur gauche : (0,150)
 
Je souhaiterai écrire une fonction permettant de réduire ce tableau pour ne récupérer que la partie que l'on désire.
Les coins sont donnés en parametres.
int ** tableau_reduit(int csgX, int csgY, int csdX, int csdY, int cidX, int cidY, int cigX, int cigY)
 
Merci

mood
Publicité
Posté le 14-03-2007 à 19:28:19  profilanswer
 

n°1528619
pfuitt
Posté le 14-03-2007 à 19:46:08  profilanswer
 

deja,au passage, si tu as 150 lignes, tu ne peux pas addresser la case 150...sinon ca part en javel.
et qu'entends tu par 'reduire' ? tu veux extraires un tableau plus petit tout en conservant l'original ou tu veux redimensionner (donc perdre) l'original ?

n°1528622
lasvegasth​eking
Posté le 14-03-2007 à 19:50:58  profilanswer
 

pfuitt a écrit :

deja,au passage, si tu as 150 lignes, tu ne peux pas addresser la case 150...sinon ca part en javel.
et qu'entends tu par 'reduire' ? tu veux extraires un tableau plus petit tout en conservant l'original ou tu veux redimensionner (donc perdre) l'original ?


Bonjour,
 
je souhaite extraire un tableau plus petit tout en conservant l'original.

n°1528628
Elmoricq
Modérateur
Posté le 14-03-2007 à 20:12:29  profilanswer
 

allocation dynamique d'un tableau avec malloc(), et ta fonction doit retourner un pointeur sur la zone mémoire nouvellement créée.
 
Plus d'information ici : http://mapage.noos.fr/emdel/notes.htm#pointeurs

n°1528629
pfuitt
Posté le 14-03-2007 à 20:16:33  profilanswer
 

bon, deja, tu n'as pas besoin des 4 coins de ton tableau final (ppFoo). Tu as juste besoin du (i_0,y_0) la case de ton ppFoo[0][0], de L ne nombre de colones et H le nombre de lignes à extraires.
 
si tes valeurs sont coherentes (i_0+ L_final > 0 et i_0 + L_final< L_init et idem pour H_final) il suffit d'allouer un tableau de sortie à la bonne dimension, de positionner les ppFoo[i][] sur la colones qui t'interesses et de recopier le nombre de cellule qui va bien
 
en gros, en virant les '...' et en les remplacant par les bonnes variables

Code :
  1. int ** tab_reduit(int ** tab_init, L_init, H_init,i_0, y_0, L, H)
  2. {
  3. /*validation des nouvelles largeurs et hauteurs*/
  4. if(L_fin<1)
  5. return NULL;
  6. ...
  7. /*validation du point initial*/
  8. if(L_init<0)
  9. return NULL;
  10. ...
  11. /*allocation du tableau final*/
  12. int **ppFoo;
  13. pFoo = (int **)malloc(...)
  14. if (!ppFoo)
  15. return NULL;
  16. ...
  17. /*recopie*/
  18. for(int j =0 ; j < H ; j++)
  19. memcpy(&tab_init[...][...], &ppFoo[...][...] ,sizeof(...)*L);
  20. }

Message cité 1 fois
Message édité par pfuitt le 14-03-2007 à 20:19:12
n°1528671
Sve@r
Posté le 14-03-2007 à 22:11:14  profilanswer
 

pfuitt a écrit :


Code :
  1. ...
  2. /*allocation du tableau final*/
  3. int **ppFoo;
  4. ppFoo = (int **)malloc(...)
  5. if (!ppFoo)
  6. return NULL;
  7. ...
  8. /*recopie*/
  9. ...



Déjà le cast du malloc est inutile. Mais si t'alloues pas quand-même la mémoire pour stocker les lignes du tableau ça partira aussi en javel...

Code :
  1. for (i=0; i < ...; i++)
  2.     ppFoo[i]=malloc(...);

Message cité 1 fois
Message édité par Sve@r le 14-03-2007 à 22:12:58

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1529080
pfuitt
Posté le 15-03-2007 à 19:40:20  profilanswer
 

Sve@r a écrit :

Déjà le cast du malloc est inutile. Mais si t'alloues pas quand-même la mémoire pour stocker les lignes du tableau ça partira aussi en javel...

 


c est un embryon e code, le but c'etait de lui montrer le how too, pas de lui pondre la routine qui vabien, mais sinon tu as raison...j'aurai du mettre au moins des '...'

 

et pour le cast... j'ignorai, donc merci

Message cité 1 fois
Message édité par pfuitt le 15-03-2007 à 19:41:27
n°1530010
Sve@r
Posté le 17-03-2007 à 21:53:00  profilanswer
 

pfuitt a écrit :

et pour le cast... j'ignorai


Ben c'est depuis que le malloc est passé de "char*" à "void*". Le type "void*" étant synonyme de "universel", plus la peine de caster un malloc. Son pointeur renvoyé s'adapte à tout...
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

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

  Réduction d'un tableau

 

Sujets relatifs
[VBA/Excel]Moduler un Tableau Excelrecuperer le tableau affichage des données de mysql (dans easyphp) ?
passage tableau à tableau avec boucle fortableau dynamique
Operations sur Tableau à 2 dimention[newbie] Spécifier la taille d'un tableau par une variable ??
[CSS/HTML] double couleurs de fond de tableau[Resolu] Tableau de byte -> float
Taille d'un tableau associatifTableau : scroller le contenu et pas l'entete
Plus de sujets relatifs à : Réduction d'un tableau


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