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

Algorithmes et structures de données Discussion :

Problème de boucles imbriquées [Débutant(e)]


Sujet :

Algorithmes et structures de données

  1. #1
    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 Problème de boucles imbriquées
    Bonjour
    Voilà je chercher simplement à m'amuser un peu et à faire ceci qui est un grand classique: un triangle équilatéral qui a pour coté le nb entre par l'utilisateur. Ainsi si celui ci entre 3 on aura:
    J'ai donc essayé de faire un algo avec des boucles comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Algo triangle
    Var nb en entier;
    Var cpteur en entier;
     
    Ecrire (Entrez un nbre svp:);
    lire (nb);
     
    Pour (cpteur=0; cpteur<nb; nb++)
    ecrire (retour chariot);
    Pour (cpteur=0; cpteur<nb, nb--)
    ecrire (*);
    Fin algo
    Si je traduis ça rapidement en perl je n'ai que *** qui s'affiche avec le retour chariot. Je me demande comment écrire ma boucle interne de façon à effectuer la décrémentation.
    En fait je pensais utiliser la boucle externe pour effectuer les retours chariot.
    MErci de votre aide

  2. #2
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut Une reponse !!
    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
    Var
    entier i=0,j=0,nbr=0;
     
    Debut
     
    Lire (nbr);
     
    Pour i=nbr à 0 faire
     
     pour j=0 à i faire
      ecrie (*)
     fin pour
     
    fin pour
     
    Fin

  3. #3
    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
    Bonjour
    Pourquoi à 0? Je comprends pas trop là ce que tu fais: tu affectes nbr à i et...?
    MErci de ta réponse

  4. #4
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut Reponse
    Salut

    mais il ne s'agit pas d'un affectation, il s'agit d'une intialisation !!!


    pour i=nbr vers 0 c-a-d pour i de nbr à 0 (ou à 1 plus juste) faire

    a+

  5. #5
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut Re: Problème de boucles imbriquées
    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
    Algo triangle
       Var nb en entier;
       Var cpteur_e en entier;
       Var cpteur_i en entier;
     
       Ecrire (Entrez un nbre svp:);
       lire (nb);
     
       Pour (cpteur_e=nb; cpteur_e>0; cpteur_e--)
          Pour (cpteur_i=0; cpteur_i<nb, cpteur_i++)
             ecrire (*);
          FinPour
          ecrire (retour chariot);
          nb--;
       FinPour
    Fin algo
    Pourrait être une démarche valide, non ?

  6. #6
    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
    Salut
    Que designe cpteur_i? Et pourquoi tu décrémentes le nb à la fin seulement et pas dans la boucle?

  7. #7
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut Attention !
    Salut

    Mais comme ca tu va toucher à la variable saisie (nbr);


    A+

  8. #8
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par Gnux
    Salut
    Que designe cpteur_i? Et pourquoi tu décrémentes le nb à la fin seulement et pas dans la boucle?
    cpteur_i et cpteur_e sont deux compteurs ... celui de la boucle interne, et celui de la boucle externe.

    Toucher à la variable saisie ne me pose aucun état d'âme s'il n'a pas été précisé qu'elle devrait encore servir ...

    L'algo proposé n'est qu'une vague déclinaison du tien, gnux.

    J'aurai plutôt fait :
    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
    Algo triangle
       Var nb en entier;
       Var cpt en entier;
     
       Ecrire (Entrez un nbre svp:);
       lire (nb);
     
       Tantque (nb > 0)
          Pour (cpt=0; cpt<nb, cpt++)
             ecrire (*);
          FinPour
          ecrire (retour chariot);
          nb--;
       FinTantque
    Fin algo
    Ce qui ne change pas grand chose, finalement ...

  9. #9
    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
    Salut
    ***
    **
    *
    Si on regarde bien ce qui se passe :
    On entre trois
    On ecrit 3 étoiles
    on va à la ligne
    On ecrit 2 étoiles
    on va à la ligne
    On ecrit 1 étoiles
    on va à la ligne
    Il n'y a plus d'étoiles à écrire donc on s'arrète.

    Première analyse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Tant qu'on a des étoiles à écrire
      on écrit les étoiles
      on va à la ligne
      on décremente de 1 le nombre d'étoiles
    fin tant que
    Seconde analyse "écrire les étoiles"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    n est le nombre d'étoiles
    pour i de 1 à n par pas de 1
      ecrire une étoile
    fin pour
    On obtient donc le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Var n entier nombre d'étoiles à écrire
    Var j entier compteur de boucle
    debut
      Ecrire "Quel est le nombre d'étoiles"
      Lire nb
     
      tant que nb > 0 faire
         pour j de 1 à nb par pas de 1 faire
             Ecrire une étoile
        fin pour
        Aller à la ligne
        nb <- nb - 1
      fin tant que
    fin
    Ce n'est jamais qu'un clone de celui de 2Eurocents
    "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

  10. #10
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Autre analyse :
    Quand on fait un triangle de n de côté, on écrit n étoiles, un passage à la ligne, puis le triangle à n-1 de côté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Triangle( entier N ) :
      Si( N > 0 )
        Pour I = 1 à N
          Ecrire "*"
        FinPour
        Ecrire "\n"
        Triangle( N - 1 )
      FinSi


    Mais bon puisque tu as écris "Perl" dans ton message initial, je te livre une solution plus perlienne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sub triangle {
      local $\ = "\n";
      map { print "*" x $_ } (reverse (1..$_[0]));
    }


    --
    Jedaï

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

Discussions similaires

  1. Problème de boucles imbriquées
    Par cedric70 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/08/2014, 15h36
  2. Problème de boucle imbriquée
    Par Phossoyeur dans le forum C#
    Réponses: 0
    Dernier message: 19/06/2012, 14h09
  3. [OCaml] Problème de boucles imbriquées
    Par Capitain_jupi dans le forum Caml
    Réponses: 0
    Dernier message: 01/10/2011, 13h42
  4. Problémes de Boucles imbriquées
    Par claude_tech dans le forum Débuter
    Réponses: 11
    Dernier message: 13/06/2011, 12h57
  5. [XSLT] problème de boucle imbriquée en xsl/xpath
    Par lol88 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/10/2009, 18h30

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