Bonjour!
Voici l'algorithme:
saisir (n);
tantque n>0 faire
a:=floor (n/10);
b:=n-10*a;
si a!=0 alors y:=10*b+a sinon y:=b;
fsi;
n:=abs(n-y);
afficher (n);
ftantque;
Bonjour, imagine un n entre 1 et 99, il s'écrit donc xy
a:=floor (n/10) ça donne quoi ? n/10=x,y et floor (n/10) donne x donc a prend la valeur x
b:=n-10*a donc b = xy-10x = y donc en fait jusqu'à maintenant, si on résume, on a rentré un nombre n de deux chiffres et on a trouvé son premier chiffre qu'on a mis dans a et le second qu'on a mis dans b
si a!=0 alors y:=10*b+a sinon y:=b;
si a est différent de 0 c'est que n était entre 10 et 99
si n=ab on voit que y=ba , on a donc intervertit les deux chiffres de n en fait
n:=abs(n-y)
donc n = ab (= 10a+b ) et y = ba = 10b + a, que vaut n-y ? n-y = 10a+b -(10b + a) = 9a-9b = 9(a-b) et on prend la valeur absolue donc
n vaut maintenant 9|a-b|
Est-ce qu'il s'arrête ? Si n est un nombre de deux chiffres, oui on a vu qu'il s'arrêtait et qu'il affichait 9 fois la valeur absolue de la différence entre les deux chiffres du nombre.
Si n est un nombre de 1 chiffre, alors y vaut b (donc le nombre) et a=0 donc n-y = b-b = 0
l'algorithme s'arrête bien également.
Merci!
J'avais déjà fait cette demonstration en partant de |N-Y|, je suis arrivé à |9(a-b)|,mais je n'avais pas fait l'interpretation.
J'avais montré à la prof de maths et elle m'avait dit que je me prenais beaucoup la tete alors qu'il y a une solution plus simple ^^.
Je vais quand meme faire de cette façon.
Je te remercie.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :