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

Intelligence artificielle Discussion :

Prendre en compte une valeur insérée dans une boucle for


Sujet :

Intelligence artificielle

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut Prendre en compte une valeur insérée dans une boucle for
    Bonjour à tous,

    Est-ce qu'il possible de changer la liste de parcours dans une boucle for :
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (for([i liste-depart]) 
    (display i)
    Instruction 2
    ; pour une condition donnée, il se peut que je veux ça: 
    ; (set! liste-depart(cons une_valeur liste-depart)
    Mais lorsque j'execute ce bout de code, je remarque que i ne prend jamais la valeur (une_valeur) que j'insère dans for.

    Comment faire de telle sorte que la nouvelle valeur soit évaluée ?

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    je ne comprend pas trop ton message, mais en gros, un indice de boucle est un indice de boucle, qui a une valeur fixe dans la partie incrémentation.

    Si on veut le modifier, il faut recommencer la boucle..

    On peut donc faire quelque chose comme

    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
    Vrai = True
    iStart = 0
    iEnd = N
     
    while ( Vrai )
      {
          Vrai = False
     
           for ( i = iStart ; i < iEnd ; i++ )
             {
                 if ( i = VALEUR_TEST1 )
                    {
                       iStart = New_iStart
                       iEnd = New_iEnd
                       Vrai = True
                       break
                    } 
             }
      }
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut
    Merci, pour cette réaction. Tu as bien compris mon problème, c'est exactement ce que je désire faire mais en programmation LISP (SCHEME). Si tu pouvais me le reconvertir en LISP, ça me fera plus plaisir car j'y ai éssayé mais rien.
    J'atends ta réponse.

    A+++

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut,
    Il faut dire que dans ma boucle for, le "i" parcourt une liste et si il devrait avoir insertion, je dois le faire en queue de ma liste.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    je ne connais rien à Lisp, et de toutes façons, d'après ce que tu dis, c'est à toi de le faire... et on ne pas te le faire à ta place


    Maintenant, en ce qui concerne l'insertion en bout de liste, c'est plus facile...

    Mais ça marche que pour ce cas-là...


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
           for ( i = 0; i < iEnd ; i++ )
             {
                 if ( i = VALEUR_TEST1 )
                    {
                       /* Insertion en fin de chaîne */
                       .....
                       iEnd = iEnd + 1
                    } 
             }
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut SOUVIRON,
    Tu m'as compris, je démande à ce que quelequ'un le fasse à ma place, je cherche d'abord à comprendre pourquoi si je fais l'insertion dans liste_depart, le "i" ne le prend pas en compte. Si, j'ai mal fait, que quelqu'un m'appuie et non quelqu'un fasse tout le boulot sinon je n'allais pas écrire un code. OK?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (for([i liste-depart]) 
    (display i)
    Instruction 2
    ; pour une condition donnée, il se peut que je veux ça: 
    ; (set! liste-depart(cons une_valeur liste-depart)

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    salut,
    A forte de faire des recherches et plus de reflexion, j'ai fini par trouvé cette méthode qui marche très bien.

    Au debut de ma fonction define, je peux connaitre combien d'élement je peux insérer. soit Val cette valeur et ValMax = Val +(length liste-depart).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    (for([i ValMax]) 
    (cond ((pair? liste-depart)
    (set! j (car  liste-depart))
    (display j) (newline)
    (cond((equal? j valeur-test)
     (set! liste-depart(cons une_valeur liste-depart))
      (set! liste-depart(cons 'toto liste-depart))))
    (set! liste-depart (cdr liste-depart))
    )))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/11/2011, 14h18
  2. Réponses: 8
    Dernier message: 05/04/2011, 08h06
  3. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  4. Utiliser une valeur insérée dans une ComboBox
    Par Conico113 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/11/2008, 10h06
  5. Réponses: 1
    Dernier message: 11/06/2008, 13h33

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