Bonjour, j'ai un programme à créer et j'ai un problème dans ma double boucle FOR, je souhaiterais alors que quelqu'un me vienne en aide pour m'aider à trouver mon erreur.
Je vous laisse lire l'énoncé:
Considérons les opérations suivantes applicables à un nombre entier (positif) :
— si ce nombre est divisible par 3, on lui ajoute 4 ;
— s’il n’est pas divisible par 3 mais divisible par 4, on le divise par 2 ;
— s’il n’est divisible ni par 3, ni par 4, on lui soustrait 1.
On répète ces opérations successivement jusqu’à arriver à 0. Concrètement, partant d’un entier n0, on applique les opérations à n0 pour obtenir n1, puis si n1 n’est pas nul, on lui applique à nouveau les opérations précédentes, et ainsi de suite jusqu’à obtenir un nombre nk valant 0.
Par exemple, si on part de 7, on trouve successivement les valeurs : 6, 10, 9, 13, 12, 16, 8, 4, 2, 1 et 0. Le nombre k de répétitions des opérations décrites ci-dessus est alors 11. Par contre, si on part de 1, on tombe tout de suite sur 0, et le nombre de répétitions est alors de k = 1.
On vous demande d’écrire un programme qui affiche le nombre de répétitions des opérations précédentes nécessaires pour tomber à 0, en partant tour à tour de chacun des entiers compris entre deux entiers saisis au clavier.
Par exemple, si l’on demande ce nombre de répétitions pour chaque entier entre 1 et 7, l’affichage produit par votre programme devra être :
1 -> 1
2 -> 2
3 -> 12
4 -> 3
5 -> 4
6 -> 10
7 -> 11
J'ai vérifié si ce qui était au dessus de ma seconde boucle For était correcte et c'est le cas, cependant je ne trouve pas l'erreur dans ma seconde boucle for.
sachant que les entrées sont : debut (le nombre a partir duquel on veut partir: ici 1) et fin(celui qui va terminer la boucle: ici 7)
Voici mon programme (la partie qui nous intéresse) :
Et voilà ce que cela m'affiche :Code:for (int i(debut);i<=fin;++i) { for (int m(1); debut!=0;++m) { if (debut%3==0) { debut=debut+4; } else if ((debut%3!=0) and (debut%4==0)) { debut=(debut/2); } else { debut=debut-1; } cout << i <<" -> "<< m; } }
de (>= 1) ? 1
a (>= 1) ? 7
1 -> 1
Est-ce que quelqu'un pourrait me dire ce qui cloche svp ?
Cordialement,
Blueshift.
-----