Forum

Catégorie : Support
Forum : TI-82
Vues : 940
Réponses : 2
Type : discussion
Etat : réponses autorisées

Que fait cette algorithme svp

Walid le 01/12/2013 à 17:11
Code
ClrList L1 // j'ai ajouté ça pour vider la liste
Prompt N // pour initialiser N dans le programme
N->dim(L1
For(I,1,N
Prompt A // on ne peut pas stocker directement dans la liste
A->L1(I // alors j'utilise A en intermédiaire
End
SortA(L1 // tri croissant
Disp "LA MEDIANE VAUT
If 0=fPart(N/2 // cela signifie que N est paire
Then
Disp (L1(N/2)+L1(N/2+1))/2 // ( N/2 ième terme + N/2+1 ième terme)/2
Else
Disp L1(N/2+.5) // N/2+1/2 ième terme
End
m@thieu41 le 01/12/2013 à 17:28
Bonjour,

J'imagine qu'il calcule la médiane d'une liste :p

Code
ClrList L1 // j'ai ajouté ça pour vider la liste
Prompt N // pour initialiser N dans le programme
N->dim(L1
For(I,1,N
Prompt A // on ne peut pas stocker directement dans la liste
A->L1(I // alors j'utilise A en intermédiaire
End


On peut demander à saisir une liste en faisant Prompt L1 ou Input "Liste:",L1. A la saisie, il faut alors respecter la syntaxe: {terme1, terme2, ..., termeN}

If 0=fPart(N/2
Peut s'écrire:
If not(fPart(N/2

Code
If 0=fPart(N/2 // cela signifie que N est paire
Then
Disp (L1(N/2)+L1(N/2+1))/2 // ( N/2 ième terme + N/2+1 ième terme)/2
Else
Disp L1(N/2+.5) // N/2+1/2 ième terme
End

peut être optimisé:
Code
Disp (L1(int(.5N))+L1(int(.5N)+2not(fPart(.5N //On fait la moyenne de la N/2 e valeur, et de la [N/2 + 1 si N est pair ; N/2 si N est impair]


Je ne saisis pas vraiment ce que tu veux en fait: le code n'est pas assez commenté et il y a des choses que tu ne comprends pas? Si oui soit plus précis pour qu'on t'explique.

(Et il ne s'agit pas d'un algorithme, mais d'un prgm).
linkakro le 01/12/2013 à 18:55
Tu aurais pu poster le lien du sujet où j'ai posté ce programme ou poster dans le sujet en question.
https://tout82.pages-perso.fre[...].php?sujet=3187

Beaucoup de choses peuvent être simplifiées en effet. Je signale quand même que ce n'était pas mon but la première fois.

On peut simplement utiliser la fonction médiane() si vous voulez.
Code
médiane(L1)


Quant au programme je reprend en changeant progressivement et avec d'autres commentaires. (autres posts ou edits à venir)
Code
Prompt N // saisis la taille
N->dim(L1 // affecte la taille
For(I,1,N // parcourt la liste pour remplir chaque terme
Prompt A // saisie
A->L1(I // affectation d'un terme par la saisie
End
SortA(L1 // tri croissant
Disp "LA MEDIANE VAUT
If 0=fPart(N/2 // cela signifie que N est paire
Then
Disp (L1(N/2)+L1(N/2+1))/2 // milieu des deux termes centraux
Else
Disp L1(N/2+.5) // terme du milieu : (N+1)/2 ième terme
End
Le début permet de saisir la liste. Puis SortA tri dans l'ordre croissant. Puis le terme de position centrale est déterminé en piochant dans la liste au milieu.