Autorisation : Membre
Nb de messages : 1
Inscrit le : Dim 01 Déc 2013, 17:04
Posté le : Dim 01 Déc 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
Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Dim 01 Déc 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).
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.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)