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 tout
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
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







Répondre avec citation









Partager