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 :

Boucles d'itération imbriquées


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2021
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2021
    Messages : 31
    Par défaut Boucles d'itération imbriquées
    Bonjour,
    Je souhaite résoudre le problème suivant : On me donne un nombre entier. Si ce nombre est divisible par 3, on lui ajoute 4. Si n’est pas divisible par 3, mais par 4, on le divise par 2. S’il n’est divisible ni par 4, ni par 3, on lui soustrait 1. On répète ces opérations jusqu’à ce que ledit nombre soit égal à zéro et l’on veut connaitre le nombre d’opérations effectuées.

    Exemple : supposons que le nombre N est 5

    Il n’est pas divisible par 3, ni par 4. Donc, on lui soustrait 1. N=4 (5-1). Il est maintenant divisible par 4, donc on le divise par 2. N=2 (4/2). Comme il n’est divisible ni par 3, ni par 4, on lui soustrait 1. N=1 (2-1). Comme il n’est divisible ni par 3, ni par 4, on lui soustrait 1. N=0 (1-1). Fin des opérations, il y en a eu 4.
    Je sais utiliser une boucle while pour effectuer la division par 3 et une autre pour la division par 4…Mais si je passe de la division de 3 à celle de 4 et que le résultat (après division par 2) est à nouveau divisible par 3…là je suis bloqué ! Je ne sais comment retourner dans la boucle de division par 3, ou trouver une solution ad hoc.

    Partant, auriez-vous l’amabilité de m’aider ? Merci et bonne journée

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Citation Envoyé par debuteenc Voir le message
    Je sais utiliser une boucle while pour effectuer la division par 3 et une autre pour la division par 4…
    Pourquoi tu utilises 1 boucle while ?

    Ton algo est [ultra] trivial : tu n'as qu'à retranscrire en code. Il n'y a aucun piège
    Si ce nombre est divisible par 3, on lui ajoute 4. Si n’est pas divisible par 3, mais par 4, on le divise par 2. S’il n’est divisible ni par 4, ni par 3, on lui soustrait 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    si (X divisible par 3)
    alors X += 4
    sinon
        si (X divisible par 4)
        alors X /= 2
        sinon X -= 1
        fin si
    fin si
    On répète ces opérations jusqu’à ce que ledit nombre soit égal à zéro et l’on veut connaitre le nombre d’opérations effectuées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    counter <- 0
     
    tant que (X différent de 0) faire
    // ton algo
     
        ++counter
    fin tant que

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Es-tu vraiment ingénieur développement ?
    Pourquoi parler de 2 boucles quand l'algo est clairement une unique boucle ?
    J'ai vu des projets étudiants de première année plus difficile que ça...
    1 while, 1 unsigned et 2 modulos, et c'est gagné en même pas 10 lignes.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2021
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2021
    Messages : 31
    Par défaut
    Merci pour l'aide et vote accueil! Relativement à ma formation, je suis bien ingénieur de développement ...Depuis le début de 1980...Je me suis fourvoyé dans ma date de naissance, j'ai mis celle du début de ma carrière professionnelle. Je suis également agrégé de physique (ondes électromagnétiques, plus particulièrement les micro-ondes) et statisticien (épidémiologie). Je débute dans la programmation en C++ avec l'idée d'utiliser ce langage pour la programmation de microcontrôleurs. Jusqu'à présent, je n'ai utilisé que le langage assembleur. Comme vous l'aurez deviné je suis déjà un vieux monsieur et un retraité... J'allais oublier, l'exercice proposé oblige à n'utiliser que des boucles while!

  5. #5
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Citation Envoyé par debuteenc Voir le message
    J'allais oublier, l'exercice proposé oblige à n'utiliser que des boucles while!
    Et ?

    if est 1 structure conditionnelle mais pas 1 boucle

    Sinon tu peux coder en ultra [méga] débile [non testé, non compilé]
    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
    20
    21
    22
    23
    24
    25
    bool is_first, is_not_3, is_not_4;
    int X = 5; // or unsigned int
     
    is_not_3 = true;
    is_not_4 = true;
     
    is_first = true;
    while ((X % 3 == 0) && is_first) {
        X += 4;
        is_not_3 = false;
        is_first = false;
    }
     
    is_first = true;
    while (is_not_3 && (X % 4 == 0) && is_first) {
        X /= 2;
        is_not_4 = false;
        is_first = false;
    }
     
    is_first = true;
    while (is_not_4 && is_not_3 && is_first) {
        X -= 1;
        is_first = false;
    }
    L'intérêt tu n'apprends rien c'est 1 exercice pour "bête de foire"
    Mais l'algo en lui-même reste le même.

    Édit : renommage de mon booléen avec 1 nom plus parlant. Et on peut utiliser 1 compteur à la place, mais 1 booléen est en quelque sorte 1 compteur jusqu'à 1

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2021
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2021
    Messages : 31
    Par défaut
    ...Merci pour le code avec les while! Si si j'apprends! Grâce à vous je sais désormais utiliser bool!

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

Discussions similaires

  1. [Toutes versions] Message d'erreur pour 2 boucles "For...next" imbriquées.
    Par vivi4561 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/09/2009, 14h41
  2. Sortir de deux boucles FOR-END imbriquées
    Par Nabuchodonosor15 dans le forum MATLAB
    Réponses: 5
    Dernier message: 31/08/2009, 09h58
  3. boucles do - while imbriquées
    Par Vakarm dans le forum ASP
    Réponses: 1
    Dernier message: 30/05/2008, 22h19
  4. Réponses: 3
    Dernier message: 24/05/2007, 17h56
  5. Comment optimiser plusieurs boucles FOR-END imbriquées
    Par totoc1001 dans le forum MATLAB
    Réponses: 26
    Dernier message: 13/05/2007, 17h59

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