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



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;
}
cela compile bien mais à l'exécution il se contente d'afficher n et p c'est tout
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