IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Vider liste chainée, problème


Sujet :

C

  1. #21
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par hunter99
    euh est ce que la fonction de Emmanuel Delahaye supprime reelement la liste ?
    Sa fonction vide_liste, oui, absolument...

    La fonction sur laquelle j'ai réagit, c'est celle d'ajout d'éléments
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  2. #22
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    la fonction de MR Emmanuel garde le premier noeud en memoire.Vu qu'il a fait un passage par valeur sa fonction vider_liste va vider une copie du premier noeud et tous les autres noeuds ensuite c bien ça ?

  3. #23
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par hunter99
    la fonction de MR Emmanuel garde le premier noeud en memoire.Vu qu'il a fait un passage par valeur sa fonction vider_liste va vider une copie du premier noeud et tous les autres noeuds ensuite c bien ça ?
    On parle bien de ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /* EDIT : forçage de la tête (de noeud, mouarf!) à NULL */
    void vider_liste (noeud **pn)
    {
       noeud *n = *pn;
       while (n != NULL)
       {
          noeud *temp = n;
          n = n->svt;
          free (temp);
       }
       *pn = NULL;
    }
    Je ne vois pas de problèmes dans ce code. Je l'ai passé au détecteurs de mensonges :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Usage xxx[ /T][ /E][ /O][ <options application>]
    FRMWRK.DBG_SYSALLOC=1
    SYSALLOC Overload (85 rec)
    SYSALLOC Successful initialization: 85 records available
    SYSALLOC 'M 003D3BA8      8 4294967295   24:main.c'
    SYSALLOC 'M 003D3B98      8 4294967295   24:main.c'
    SYSALLOC 'M 003D3B88      8 4294967295   24:main.c'
    1 -> 2 -> 3 -> NIL
    SYSALLOC 'F 003D3BA8      0 4294967295   54:main.c'
    SYSALLOC 003D3BA8 matched
    SYSALLOC 'F 003D3B98      0 4294967295   54:main.c'
    SYSALLOC 003D3B98 matched
    SYSALLOC 'F 003D3B88      0 4294967295   54:main.c'
    SYSALLOC 003D3B88 matched
    SYSALLOC min=4294967295 max=4294967295 delta=0
    SYSALLOC All-matched
    SYSALLOC Released Memory
    FRMWRK.Termine
     
    Press ENTER to continue.

  4. #24
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    la fonction de MR Emmanuel garde le premier noeud en memoire.Vu qu'il a fait un passage par valeur sa fonction vider_liste va vider une copie du premier noeud et tous les autres noeuds ensuite c bien ça ?
    On parle bien de ça ?
    non je parlais de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void vider_liste (noeud *n)
    {
       noeud *temp = n;
       while (n != NULL)
       {
          temp = n;
          n = n->svt;
          free (temp);
       }
    }

  5. #25
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par hunter99
    non je parlais de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void vider_liste (noeud *n)
    {
       noeud *temp = n;
       while (n != NULL)
       {
          temp = n;
          n = n->svt;
          free (temp);
       }
    }
    Laisse tomber ce code là. Je l'ai effacé. C'est le 2ème qui fonctionne.

  6. #26
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    slt, j'ai essayé ta fonction et elle marche , apparement le probleme vient de ma fonction d'ajout mais j'ai pas compris sa cause .En effet lrsq j'ajoute un element avec ma fonction ajout_liste_qui_plante ça marche niquel mais si je la vide ça plante , alors que la meme maneuvre fonctionne avec ajouter_liste de MR Emmanuel ! j'ai essayé le debug mais le resultat des 2 fonctions d'ajout est identique.Svp est ce que qlqn peut m'expliquer la cause du probleme ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    #include <stdio.h> f
    merci
    #include <stdlib.h>
     
     
     
     
    typedef struct noeud
    { 
    	int val;
    	struct noeud* svt;
    }noeud;
    void ajouter_liste_qui_plante (noeud ** n, int val) // ma fonction qui cause le 
                                                                       // le plantage
    {
    	noeud *temp=*n;
     
    	if (temp==NULL)
    	{
    		*n=malloc(sizeof *n);
    		(*n)->svt=NULL;
    		(*n)->val=val;
    	}
    	else
    	{
    		while (temp->svt!=NULL)
    		{
    			temp=temp->svt;
    		}
    		temp->svt=malloc(sizeof *temp->svt);
    		temp=temp->svt;
    		temp->svt=NULL;
    		temp->val=val;
    	}
    }
     
     
    void ajouter_liste (noeud ** n, int val)// fct d'Emmanuel
    {
      noeud *new = malloc (sizeof *new);
       if (new != NULL)
       {
          new->val = val;
          new->svt = NULL;
          if (*n == NULL)
          {
             *n = new;
          }
          else
          {
             noeud *p = *n;
             while (p->svt != NULL)
             {
                p = p->svt;
             }
             p->svt = new;
          }
       }
     
    }
     
    void vider_liste (noeud **pn)// fct d'Emmanuel
    {
       noeud *n = *pn;
       while (n != NULL)
       {
          noeud *temp = n;
          n = n->svt;
          free (temp);
    	}
       *pn = NULL;
    }
     
    int main()
    {
    noeud *n=NULL,*m=NULL;
     
    ajouter_liste_qui_plante(&n,1);
    ajouter_liste_qui_plante(&n,2);
    ajouter_liste(&m,1);
    ajouter_liste(&m,2);
     
    vider_liste(&n);
    vider_liste(&m);
     
     
    return 0;
    }

  7. #27
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par hunter99
    slt, j'ai essayé ta fonction et elle marche , apparement le probleme vient de ma fonction d'ajout mais j'ai pas compris sa cause .En effet lrsq j'ajoute un element avec ma fonction ajout_liste_qui_plante ça marche niquel mais si je la vide ça plante , alors que la meme maneuvre fonctionne avec ajouter_liste de MR Emmanuel ! j'ai essayé le debug mais le resultat des 2 fonctions d'ajout est identique.Svp est ce que qlqn peut m'expliquer la cause du probleme ?
    Pour moi les deux fonctions se comportent normalement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Usage xxx[ /T][ /E][ /O][ <options application>]
    FRMWRK.DBG_SYSALLOC=1
    SYSALLOC Overload (85 rec)
    SYSALLOC Successful initialization: 85 records available
    SYSALLOC 'M 003D3B70      4 4294967295   17:main.c'
    SYSALLOC 'M 003D3B60      8 4294967295   28:main.c'
    SYSALLOC 'M 003D3B50      8 4294967295   28:main.c'
    SYSALLOC 'M 003D2430      8 4294967295   28:main.c'
    1 -> 2 -> 3 -> 4 -> NIL
    SYSALLOC 'F 003D3B70      0 4294967295   69:main.c'
    SYSALLOC 003D3B70 matched
    SYSALLOC 'F 003D3B60      0 4294967295   69:main.c'
    SYSALLOC 003D3B60 matched
    SYSALLOC 'F 003D3B50      0 4294967295   69:main.c'
    SYSALLOC 003D3B50 matched
    SYSALLOC 'F 003D2430      0 4294967295   69:main.c'
    SYSALLOC 003D2430 matched
    SYSALLOC min=4294967295 max=4294967295 delta=0
    SYSALLOC All-matched
    SYSALLOC Released Memory
    FRMWRK.Termine
     
    Press ENTER to continue.
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Usage xxx[ /T][ /E][ /O][ <options application>]
    FRMWRK.DBG_SYSALLOC=1
    SYSALLOC Overload (85 rec)
    SYSALLOC Successful initialization: 85 records available
    SYSALLOC 'M 003D3B70      8 4294967295   38:main.c'
    SYSALLOC 'M 003D3B60      8 4294967295   38:main.c'
    SYSALLOC 'M 003D3B50      8 4294967295   38:main.c'
    SYSALLOC 'M 003D2430      8 4294967295   38:main.c'
    1 -> 2 -> 3 -> 4 -> NIL
    SYSALLOC 'F 003D3B70      0 4294967295   69:main.c'
    SYSALLOC 003D3B70 matched
    SYSALLOC 'F 003D3B60      0 4294967295   69:main.c'
    SYSALLOC 003D3B60 matched
    SYSALLOC 'F 003D3B50      0 4294967295   69:main.c'
    SYSALLOC 003D3B50 matched
    SYSALLOC 'F 003D2430      0 4294967295   69:main.c'
    SYSALLOC 003D2430 matched
    SYSALLOC min=4294967295 max=4294967295 delta=0
    SYSALLOC All-matched
    SYSALLOC Released Memory
    FRMWRK.Termine
     
    Press ENTER to continue.
    Avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct noeud
    {
       int val;
       struct noeud *svt;
    }
    noeud;
     
    #if 0
    // ma fonction qui cause le
    // le plantage
    void ajouter_liste (noeud ** n, int val)
    {
       if (*n == NULL)
       {
          *n = malloc (sizeof *n);
          (*n)->svt = NULL;
          (*n)->val = val;
       }
       else
       {
          noeud *temp = *n;
          while (temp->svt != NULL)
          {
             temp = temp->svt;
          }
          temp->svt = malloc (sizeof *temp->svt);
          temp = temp->svt;
          temp->svt = NULL;
          temp->val = val;
       }
    }
    #else
    // fct d'Emmanuel
    void ajouter_liste (noeud ** n, int val)
    {
       noeud *new = malloc (sizeof *new);
       if (new != NULL)
       {
          new->val = val;
          new->svt = NULL;
     
          if (*n == NULL)
          {
             *n = new;
          }
          else
          {
             noeud *p = *n;
             while (p->svt != NULL)
             {
                p = p->svt;
             }
             p->svt = new;
          }
       }
    }
    #endif
     
    // fct d'Emmanuel
    void vider_liste (noeud ** pn)
    {
       noeud *n = *pn;
       while (n != NULL)
       {
          noeud *temp = n;
          n = n->svt;
          free (temp);
       }
       *pn = NULL;
    }
     
    void afficher_liste (noeud * n)
    {
       noeud *p = n;
     
       while (p != NULL)
       {
          printf ("%d -> ", p->val);
          p = p->svt;
       }
       printf ("NIL\n");
    }
     
    int main (void)
    {
       noeud *n = NULL, *m = NULL;
       ajouter_liste (&n, 1);
       ajouter_liste (&n, 2);
       ajouter_liste (&n, 3);
       ajouter_liste (&n, 4);
       afficher_liste (n);
       vider_liste (&n);
       vider_liste (&m);
       return 0;
    }

  8. #28
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    tu a quoi comme compilo ? Est ce que tu peut l'essayer sur le visual 6 si c'est possible ?
    merci

  9. #29
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par hunter99
    tu a quoi comme compilo ?
    MinGW.
    Est ce que tu peut l'essayer sur le visual 6 si c'est possible ?
    Je n'ai plus ça en magasin depuis longtemps. Le moins de Microsoft possible chez moi...

  10. #30
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    tu pense que c'est normal que ça plante sous visual et que ça marche sous c::b ?

  11. #31
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par hunter99
    tu pense que c'est normal que ça plante sous visual et que ça marche sous c::b ?
    Non, mais comme je ne sais pas ce que tu appelles 'plante', je ne peux en dire plus.

  12. #32
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Dans ta fonction ajouter_liste_qui_plante, tu as (au moins) une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void ajouter_liste_qui_plante (noeud ** n, int val) // ma fonction qui cause le 
                                                                       // le plantage
    {
    ...
    	else
    	{
    ...
                     // Erreur dans la ligne mis en commentaire
                     //   car il ne faut pas de * (alors qu'avec n, il faut bien une *)
    	         //temp->svt=malloc(sizeof *temp->svt);
                     temp->svt=malloc(sizeof temp->svt);
    Peut être que ton pb. viens de là.

  13. #33
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    mchk0123>j'ai reparé l'erreur mais ça ne change rien
    Emmanuel>Damage after normal block (#42) at (une adresse)

  14. #34
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par hunter99
    mchk0123>j'ai reparé l'erreur mais ça ne change rien
    Emmanuel>Damage after normal block (#42) at (une adresse)
    42 ! Tout peut arriver !

    Je ne vois pas.

  15. #35
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    void ajouter_liste_qui_plante(noeud ** n, int val)
     {
     noeud *temp=*n;
    	
     if (temp==NULL)
      {
      *n=malloc(sizeof (noeud));
      (*n)->svt=NULL;
      (*n)->val=val;
      }
     else
      {
      while (temp->svt!=NULL)
       {
       temp=temp->svt;
       }
      temp->svt=malloc(sizeof *temp->svt);
      temp=temp->svt;
      temp->svt=NULL;
      temp->val=val;
      }
     }

  16. #36
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par mchk0123
    Dans ta fonction ajouter_liste_qui_plante, tu as (au moins) une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void ajouter_liste_qui_plante (noeud ** n, int val) // ma fonction qui cause le 
                                                                       // le plantage
    {
    ...
    	else
    	{
    ...
                     // Erreur dans la ligne mis en commentaire
                     //   car il ne faut pas de * (alors qu'avec n, il faut bien une *)
    	         //temp->svt=malloc(sizeof *temp->svt);
                     temp->svt=malloc(sizeof temp->svt);
    Faux.
    temp->svt=malloc(sizeof *temp->svt);
    est correct.

    http://emmanuel-delahaye.developpez....tes.htm#malloc

  17. #37
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par stephl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void ajouter_liste_qui_plante(noeud ** n, int val)
     {
     noeud *temp=*n;
    	
     if (temp==NULL)
      {
      *n=malloc(sizeof (noeud));
    Oui bien vu. On peut aussi mettre sizeof **n.

    -> PO : C'est ça ton bug.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void ajouter_liste (noeud ** n, int val)
    {
       if (*n == NULL)
       {
          *n = malloc (sizeof *n);
    n étant un **, la taille de *n est cette d'un pointeur. Pour avoir la taille de l'objet pointé, c'est sizeof *(*n) ou sizeof **n.

    C'est un comportement indéfini, tout peut arriver, y compris un comportement d'apparence normal.

    J'évite les pointeurs doubles au maximum. Trop de risques d'erreurs. Tu remarqueras que dans ma correction, je suis instinctivement descendu d'un niveau. Je ne manipule le ** qu'en fin de course.

  18. #38
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Attention, j'ai corrigé mon post précédent. J'avais oublié les parenthèses autour du nom de type pour sizeof.

  19. #39
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    Merci bcp c’est bien ça .
    Moralité de l’histoire : faire gaffe au pointeur double

  20. #40
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Faux.
    est correct.
    Mes excuses les plus ....

    J'ai rajouté un bug là où il n'y en avait pas,
    mais à la même ligne que l'autre alternative où il en avait un !
    Je doit avoir les neurones qui se touchent avec l'âge !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/12/2012, 19h15
  2. Liste chainée problème
    Par chmek firas dans le forum Débuter
    Réponses: 2
    Dernier message: 08/05/2012, 22h13
  3. Liste chainée - problème de return
    Par ghorg dans le forum Débuter
    Réponses: 10
    Dernier message: 06/12/2009, 19h54
  4. Réponses: 28
    Dernier message: 24/05/2006, 18h20
  5. Liste déroulante chainée : problème avec value
    Par jpascal dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/08/2005, 21h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo