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

  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 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 947
    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.

  8. #8
    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
    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.
    Exactement comme le bout de code que j'ai donné dans mon premier post, ce que font les fonctions "machin" et "truc" ne changent rien à l'algorithme :

    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;

  9. #9
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Citation Envoyé par stokastik
    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.
    Comme le disait DavidSchris y'a pe un autre algorithme qui pourrait faire aussi bien l'affaire.
    Quel est ton problème au juste? Que veux tu programmer?

  10. #10
    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
    Comme le disait DavidSchris y'a pe un autre algorithme qui pourrait faire aussi bien l'affaire.
    Quel est ton problème au juste? Que veux tu programmer?
    Merci je vais m'en sortir pour mon problème "au juste" (et pour vous l'expliquer il faudrait que je puisse taper des grosses formules mathématiques). J'ai trouvé une solution simple (quoique je vais peut-être utiliser la recursivité, je sais pas je n'ai pas fini). Mais comme je me suis posé cette question de "composée dynamique de for" j'ai voulu satisfaire ma curiosité.

    Merci à vous ce fut bien instructif

  11. #11
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Si c'est résolu, ne pas oublier

+ 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, 18h04
  2. BATCH : Boucle FOR qui ne boucle pas ?!
    Par agyar dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 25/10/2008, 12h27
  3. Boucle for qui ne boucle pas !
    Par polothentik dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 18/04/2008, 11h50
  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, 12h47
  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, 01h42

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