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

  FORUM HardWare.fr
  Programmation
  C

  Tableau dynamique dans une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tableau dynamique dans une fonction

n°1850995
voodoowow
Posté le 13-02-2009 à 19:53:25  profilanswer
 

Bonjour,
 
J'ai un petit probleme avec mon tableau dynamique.
J'ai un tableau rempli que je met en parametre d'entrée dans une fonction. Cette fonction doit supprimer le tableau mis en entrée et recuperer des variables avec des scanf/getch et les mettre dans differentes case du tableau de la fonction. ce tableau doit avoir une taille qui s'augmente tans que l'utilisateur veut qu'il s'augmente.  
Mon probleme c'est que le tableau de la fonction n'est pas recopié dans le tableau mis en parametre d'entrée. Pourtant on sait qu'un tableau s'utilise en entrée/sortie. Mais un pointeur?
C'est la premiere fois que j'utilise les pointeurs pour faire des tableau dynamique (ma fonction marche trés bien en tableau statique).
Voici mon code  
 
Pardon il es en .txt car jai pas visual studio sur ce pc.
 
#include "Tout.h"
 
Pop est declaré dans le main en tans que pointeur de type TP.
 
main :
 
iNbGens =0;
 
/* Appel :*/   Init(Pop, iNbGens);
 
 
//Fonction :
 
void Init(TP* P, int &iDim)
{
 int iCompt=-1;
 
    do
    {
     iDim ++;
     P = (TP*) malloc(iDim * sizeof(TP));
     
     iCompt++;
     
     printf("Age?\n" );
     scanf("%d",& P[iCompt-1].Age);
     
 
     printf("Nouveau ?\n\t\tO pour Oui\t N pour Non\n" );
     iNew =_getch();  
    }while((iNew !='n')&&(iNew!='N'));
}
 
Dim est mis a 0 au debut de la fonction par son appel avec iNbGens = 0; et a la fin renvoi la bonne valeur.
Mais aprés quand je fai un printf du tableu mis en entrée de la fonction celui ci na pas ete modifié.
Merci de me repondre le plus vite possible.

mood
Publicité
Posté le 13-02-2009 à 19:53:25  profilanswer
 

n°1850997
Joel F
Real men use unique_ptr
Posté le 13-02-2009 à 20:04:46  profilanswer
 

pointeur de pointeur si tu veut modifier un pointeur dans une fonction ;)

n°1850998
voodoowow
Posté le 13-02-2009 à 20:10:57  profilanswer
 

Il y a moyen que tu me montre un exemple, pour que je comprenne car c'est la premiere fois que jutilise des pointeus et c'est pas tout simple quand on connait pas ^^ stp

n°1851076
Anonymouse
Posté le 14-02-2009 à 00:16:15  profilanswer
 

voodoowow a écrit :

Il y a moyen que tu me montre un exemple, pour que je comprenne car c'est la premiere fois que jutilise des pointeus et c'est pas tout simple quand on connait pas ^^ stp


 
Le schéma 1 représente ce que tu fais actuellement le schéma 2 ce que tu dois faire:
 
http://hfr-rehost.net/preview/self/pic/e6f9c3fad8e2a29f9358c50cb7a8c89b8570143b.png
 
Quand tu passe Pop à Init il en fait une copie appelée P qui pointe ce sur quoi Pop pointait au départ.
 
Ensuite tu fait pointer P sur une autre zone mémoire allouée mais tu ne modifie pas Pop.
 
Si tu passes par un ** c'est à dire un pointeur de pointeur tu vas la pouvoir modifier Pop.


Message édité par Anonymouse le 14-02-2009 à 00:18:50
n°1851078
voodoowow
Posté le 14-02-2009 à 00:19:20  profilanswer
 

Oula, il y aurait moyen d'avoir un exemple en C car les pointeurs je maitrise pas trop mais les pointeurs de pointeurs encore moins. Mais si jai compris ton schema :
 
C'est a dire qu'il faut que je declare un TP** Pop2;  
et aprés je fai comment pour en degagé le pointeur  Pop?  
 
et mon prototype de fonction serai void Init(TP** Pop2, int &iDim) ?
l'appel Init(TP** Pop2, iNbGens) ?
 
et le code?
 int iCompt=-1;
 TP* Pop;
 
    do
    {
     iDim ++;
     Pop = (TP*) malloc(iDim * sizeof(TP));
     
     iCompt++;
     
     printf("Age?\n" );
     scanf("%d",& P[iCompt-1].Age);
     
 
     printf("Nouveau ?\n\t\tO pour Oui\t N pour Non\n" );
     iNew =_getch();  
    }while((iNew !='n')&&(iNew!='N'));  
 
 
Mais je vois pas comment faire la relation entre TP**Pop2 et TP*Pop.


Message édité par voodoowow le 14-02-2009 à 00:33:10
n°1851081
voodoowow
Posté le 14-02-2009 à 00:38:59  profilanswer
 

En tout cas c'est super gentil de vos reponses trés bien expliquer.
C'est pour la creation d'une base de donnée avec recuperation de variable sur fichier .txt le programme que je fai. Mais on nous demande de faire maintenant des tableau dynamique sans les avoir vu en cours et c'est la galerre ^.^


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

  Tableau dynamique dans une fonction

 

Sujets relatifs
parcourir un tableau en phpTri des éléments d'un tableau
Controle de formulaire html, controle javascript par fonctionFonction md5() en C
PHP explication fonction pack()[Oracle 10g] Utilisation d'une fonction packagée ds un NOT EXISTS
Récupération des données (curseur) d'une fonction oracleRécupérer un tableau d'une fonction
[RESOLU] Aligner verticalment un tableau 
Plus de sujets relatifs à : Tableau dynamique dans une fonction


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