J'ai un exercice à faire en DM :
Que fait l'algorithme programmé ci-dessous sur Xcas, pour tout entier n compris entre 1 et 99?
Cet algorithme s'arrête-t-il bien pour tout entier n entre 1 et 99?
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;
Rappels:
-floor(p) est la partie entière de p
-a!=0 signifie a différent de 0
-abs(x) est la valeur absolue de x
Je pense avoir trouvé à quoi sert cet algo mais je ne sais pas comment l'expliquer. Si je rentre 85 il va calculer la différence entre 85 et 58.
Merci d'avance pour votre aide,
bien cordialement
salut,
si on entre 85 l'affichage bleu donne:
n:27
n:45
n:9
n:0
si on entre 80 l'affichage bleu donne:
n:72
n:45
n:9
n:0
si on entre 8 l'affichage bleu donne:
n:0
on reste dans la boucle tant que n est strictement positif
on en sort des que n=0
Merci pour ta réponse,
j'ai réussi à comprendre ce qu'il faisait pour des cas particuliers mais dans le cas géneral comment peut on l'expliquer ?
Il calcul la différence des nombres retournés non ?
voici un programme qui renvoie les valeurs successives de la variable n dans la boucle:
f(n):={
local L,a,b,y;
L:=[];
tantque n>0 faire
L:=append(L,n);
a:=floor (n/10);
b:=n-10*a;
si a!=0 alors
y:=10*b+a
sinon
y:=b;
fsi;
n:=abs(n-y);
ftantque;
retourne L
}:;
copier/coller ce programme dans l'editeur de programmes
le compiler en appuyant sur OK
passer ensuite dans une ligne de commande et coller ceci:
seq([n,f(n)],n,1,99)
valider, le tableau apparaît.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :