Posté le 11/09/2015 07:33
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 57 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 11/09/2015 07:41 | #
Fait un sous programme :
For 1→A To 26
0→List 1[A]
Next
For 1→A to StrLen(Str 1)
StrSrc(Str 20, StrMid(Str 1, A, 1))→C
List 1[C]+1->List 1[C]
Next
// Y'a plus qu'à chercher le max dans la liste ;)
Citer : Posté le 11/09/2015 09:21 | #
DS, t'as pas honte
0→List 1[A]
Next
A remplacer par :
Je te propose ma version qui renvoie le caractère le plus utilisé (variable D).
Petite précision, dans la situation où deux caractères apparaissent le même nombre de fois, celui qui est le plus proche de A (à vérifier) est renvoyé par l'algorithme.
Seq(.01X,X,1,26,1)→List 1
For 1→A to StrLen(Str 1)
StrSrc(Str 20, StrMid(Str 1, A, 1))→C
List 1[C]+1→List 1[C]
Next
100 Frac Max List 1->D
Voici une version qui renvoie en cas d'égalité tous les caractères (dans la liste 2):
Seq(.01X,X,1,26,1)→List 1
For 1→A to StrLen(Str 1)
StrSrc(Str 20, StrMid(Str 1, A, 1))→C
List 1[C]+1→List 1[C]
Next
SortD(List 1
Sum(Int List 1 = Int List 1[1->B
1->Dim List 2
For 1->A To B
100Frac List 1[A->List 2[A
Next
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 11/09/2015 17:23 | #
Je met permet d'expliquer un peu le code puisqu'il y a de bonnes astuces et que ça pourra resservir
Pour Dark Storm :
- On créer une liste de longueur 26, chaque case correspondant à une lettre (case 1->A, case 2->B, ... , case 26->Z)
- On regarde ensuite les caractères de la chaîne 1 à 1 avec StrMid :
Pour chaque caractère on regarde sa position dans l'alphabet, ce qui revient à regarder où il se trouve dans la chaine "ABCDEFGHIJKLMNOPQRSTUVWXYZ" avec StrSrc.
Puis on incrémente la case correspondante dans notre liste. Si on avait récupéré un E par exemple, sa position dans la chaine vaut 5 donc on incrément la 5e case de notre liste.
A la fin on sait donc combien de fois apparaît chaque caractère.
Le problème c'est que ça ne nous donne pas directement lequel est le plus présent.
On ne peut pas utiliser Max(List 1) qui retournerait la valeur maximale se trouvant dans la liste, donc combien de fois apparaît le caractère qui revient le plus souvent.
D'où l'intérêt de la modification de Totoyo :
- Au lieu d'avoir une liste vide au départ, on crée une liste de la forme :
{0.01 , 0.02 , 0.03 , ... , 0.26} avec la fonction Seq()
- Pour la suite on procède pareil qu'avant, on compte le nombre d'apparition de chaque caractère et on augmente la case correspondante de 1 en 1.
Chaque case garde donc la valeur après la virgule qu'on lui a donné au début.
Quand on récupère la case ayant la plus grosse valeur avec Max(List) ce qui se trouve après la virgule nous informe donc de quelle lettre il s'agit.
Par exemple si c'est la 5e lettre (soit le E) qui est la plus présente avec 12 apparitions ça retourne 12.05
Citer : Posté le 11/09/2015 17:43 | #
J'aime bien l'astuce de Totoyo, qui est bien plus complète et exploitable que la mienne
Citer : Posté le 13/09/2015 08:22 | #
Oui, je l'ai utilisé, je te citerai dans la description du prog et pour récupérer la valeur,on doit garder que la partie décimale ?
D-E->D
D*100->D
Citer : Posté le 13/09/2015 09:06 | #
C'est bien cela, c'est que la partie décimale.
Utilise Frac
(j'ai édité le code)
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<