bonjour
on me demande l'exercice suivant:
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, par-
tant 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
voilà le programme que j'ai écrit
cela compile bien mais à l'exécution il se contente d'afficher n et p c'est toutCode:
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
26
27 #include <iostream> using namespace std; int main() { int n(0); int a(0); int p(0); int t(0); cin >> n ; cin >> p ; t=n; for (int t;t<=p;++t) {while (t>0) {if (t%3==0) { t=t+4; a=a+1;} else { if((t%3 !=0) and (t%4==0)) {t=t/2; a=a+1;} else {(t=t-1); (a=a+1);}cout << a << endl; cout << t << endl;}} } return 0; }
pourtant dans mon esprit après avoir saisi n et p je fait une boucle partant de n mais que j'ai mis dans t et je lui rajoute 1 jusqu'à ce quelle arrive à p
à l'intérieur de chaque boucle for je fait un while et j'affiche a qui me donne le nombre de tours pour arriver à o et n ( c'est pour cela que j'ai créé t dans laquelle j'ai mis n pour pouvoir garder le n de départ
quelquun aurait il la gentillesse de m'aider et de me dire ou cela cloche
merci d'avance car je bloque depuis des heures et ne comprends pas
cordialement