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 :

boucle de boucles de boucles, etc.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut boucle de boucles de boucles, etc.
    Bonjour,

    J'aurais besoin de faire des boucles dans des boucles, genre :

    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
    float x=0;  
    float y=0;
    float z=0;
    float u,v,w;
    for(j=0; j<10; j++){
        u=machin(j);   
        for(k=0; k<10; k++){
           v=machin(k);
           for(l=0; l<10, l++){
               w=truc(j,k,l);
               z=z+w
               } 
           y=y+v*z;
           }  
        x=x+u*y;
        }
    return x;
    mais avec un nombre de "for" qui serait la valeur d'une variable entière du prog (un nombre "dynamique" de "for").

    Est-il possible de faire cela ?


    Sinon la méthode que je vois, ce serait de se donner un nombre maximum de "for", disons 10, d'écrire le code avec les 10 "for", et faire en sorte que si par exemple on a besoin que de 6 "for", les 4 derniers "for" ne feraient rien.

    Quelqu'un me comprend-il et a-t-il quelque chose à me suggérer ?

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Utilise la récursion.

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Utilise la récursion.
    Ou change d'algorithme.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut
    Que voulez-vous dire par "utilise la récursion" ?

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par stokastik
    Que voulez-vous dire par "utilise la récursion" ?
    Pardon, la récursivité. La récursivité permet de faire des boucles, et dans ces boucles on est un peu moins contraint que dans les boucles itératives.

    Un exemple
    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
    struct ar {
       struct ar *next;
       int i;
    };
     
    void loop(int m, struct ar *prev) 
    {
       struct ar current = { prev, 0 };
       if (m == 0) {
          for (current.i = 0; current.i < 10; ++current.i) {
             doit(&current);
          }
       } else {
          for (current.i = 0; current.i < 10; ++current.i) {
             loop(m-1, &current);
          }
       }
    }

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Je crois que la difficulté vient de ce que tu veux exactement faire dans les boucles. La solution a ton problème en dépendra.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut
    Merci, j'ai enfin trouvé un truc intéressant à programmer

    Avec cet exemple, j'ai compris : la "recursivité" permet de définir la "valeur" d'une fonction définie sur les nombres entiers à l'entier m en faisant appel à sa "valeur" en m-1. De définir par récurrence quoi. Je ne savais pas que cela était possible.

    Par contre je débute encore en C et je ne comprends pas ce que c'est "doit" ("doit(&current);")

    Ceci dit je ne suis pas sûr que la récursivité soit adaptée à ce que je veux programmer, mais je vais y réfléchir sérieusement.

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

Discussions similaires

  1. [MySQL] boucle wheil dans une boucle mysql_fetch_array
    Par sinifer dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/06/2009, 17h04
  2. BATCH : Boucle FOR qui ne boucle pas ?!
    Par agyar dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 25/10/2008, 11h27
  3. Boucle for qui ne boucle pas !
    Par polothentik dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 18/04/2008, 10h50
  4. [SQL] Boucle SQL dans une boucle for
    Par architecte dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/08/2007, 11h47
  5. [Tableaux] boucle while qui ne boucle pas comme je veux
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 00h42

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