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 émérite

    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
    Points : 2 844
    Points
    2 844
    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 régulier Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 110
    Points
    110
    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 émérite

    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
    Points : 2 844
    Points
    2 844
    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 régulier Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 110
    Points
    110
    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 : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    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 émérite

    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
    Points : 2 844
    Points
    2 844
    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 régulier Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 110
    Points
    110
    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 : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    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
    Points : 6 498
    Points
    6 498
    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

  10. #10
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    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