Problème math et programmation
Modérateurs : Papy.G, fneck, Carl
-
- Messages : 1292
- Inscription : 24 déc. 2021 09:46
- Localisation : Région parisienne
Re: Problème math et programmation
Pour la seconde solution, je ne sais pas pourquoi j'ai donné cette formule.
Celle ci devrait fonctionner de la même manière :
i=int((input*8)/256)
o=int(2**i-1)
Celle ci devrait fonctionner de la même manière :
i=int((input*8)/256)
o=int(2**i-1)
-
- Messages : 7986
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Problème math et programmation
Pas tout à fait. L’entrée max vaut 255, donc input*8/256 vaudra au max 7.9xxx mais pas 8. Int() transformera ca en 7 max (arrondi vers le bas), et o vaudra 2**7-1, soit 127 ou 64 suivant les priorités entre ** et +. (Je pense que tu devrais ajouter des parenthèses pour être plus clair.)
Pour éviter ca il faut diviser par 255 et pas 256. Tu retombes alors sur ma formule
Pour éviter ca il faut diviser par 255 et pas 256. Tu retombes alors sur ma formule
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 1292
- Inscription : 24 déc. 2021 09:46
- Localisation : Région parisienne
Re: Problème math et programmation
Je me suis trompé en recopiant la formule dans le post.
Cela aurait dû être :
i=int((input*8)/256)
o=2**i
On a bien o=1 pour input=0 et o=128 pour input=255 et c'est équitablement réparti pour les valeurs de 0 à 255.
Cela aurait dû être :
i=int((input*8)/256)
o=2**i
On a bien o=1 pour input=0 et o=128 pour input=255 et c'est équitablement réparti pour les valeurs de 0 à 255.
- gleike
- Messages : 1349
- Inscription : 16 oct. 2014 11:12
- Localisation : Ludres (54710) Meurthe & Moselle
Re: Problème math et programmation
Je vais maintenant essayer de modifier la formule afin d'obtenir un barregraphe
à la place d'une seule LED qui se déplace,
ça ne devrait pas être trop dur, la suite à envoyer est 0,1,3,7,15,31,63,127.
à la place d'une seule LED qui se déplace,
ça ne devrait pas être trop dur, la suite à envoyer est 0,1,3,7,15,31,63,127.
-
- Messages : 1292
- Inscription : 24 déc. 2021 09:46
- Localisation : Région parisienne
Re: Problème math et programmation
i=1+int((input*8)/256)
o=(2**i)-1
Ce qui donne 1 pour les valeurs de 0 à 31, 3 pour les valeurs 32 à 63, 7 pour les valeurs 64 à 95, etc jusque 255 pour les valeurs 224 à 255.
o=(2**i)-1
Ce qui donne 1 pour les valeurs de 0 à 31, 3 pour les valeurs 32 à 63, 7 pour les valeurs 64 à 95, etc jusque 255 pour les valeurs 224 à 255.
- gleike
- Messages : 1349
- Inscription : 16 oct. 2014 11:12
- Localisation : Ludres (54710) Meurthe & Moselle
Re: Problème math et programmation
Merci, j'ai même plus le temps de réfléchir, les réponses fusent à toutes allures
-
- Messages : 7986
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Problème math et programmation
[edit: ceci était une bétise :Bernouilli92 a écrit : ↑01 août 2022 23:40 Cela aurait dû être :
i=int((input*8)/256)
o=2**i
On a bien o=1 pour input=0 et o=128 pour input=255 et c'est équitablement réparti pour les valeurs de 0 à 255.
Ton int() fais donc un arrondi à l’entier le plus proche, et pas l’entier inférieur.
Ici tout dépend du Basic]
(le ** fait plutôt penser à du Python).
Par contre pour input=0, on voulait o=0.
Dernière modification par __sam__ le 02 août 2022 08:37, modifié 2 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 7986
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Problème math et programmation
Ce qui fait 8 barres au total, or on en veut 9. Il manque la barre vide pour la première tranche. En utilisant le même langage dont la conversion entière se fait à l’entier le plus proche je ferais:Bernouilli92 a écrit : ↑02 août 2022 00:36 i=1+int((input*8)/256)
o=(2**i)-1
Ce qui donne 1 pour les valeurs de 0 à 31, 3 pour les valeurs 32 à 63, 7 pour les valeurs 64 à 95, etc jusque 255 pour les valeurs 224 à 255.
i=int((input*9)/256)
o=(2**i)-1
On retrouve bien il y a 9 barres différentes équi-réparties 0, 1, 3, 7, 15, 31, 63, 127, 255.
Neuf en tout, pas 8.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 1292
- Inscription : 24 déc. 2021 09:46
- Localisation : Région parisienne
Re: Problème math et programmation
Int est la partie entière donc arrondi à l'entier juste en dessous.
Le ** est la fonction puissance. Elle est notée ** dans certains basic comme par exemple le zx81.
Pour input = 0 on doit avoir o=1 si on considère qu'il doit y avoir toujours une diode allumée. Il y a 8 possibilités.
Si on veut 9 possibilités dont toutes les diodes éteintes, alors il faut utiliser 9 comme multiplicateur et réutiliser la formule précédente. Ce qui donnerait :
i=int((input*9)/256)
o=(2**i)-1
Cela donne 28 ou 29 cas pour chacune de 9 possibilités de diodes.
Édit : tu as répondu pendant que j'écrivais mon message.
Oui. Mais tout dépend de si on veut avoir 8 ou 9 possibilités de diodes.
Le ** est la fonction puissance. Elle est notée ** dans certains basic comme par exemple le zx81.
Pour input = 0 on doit avoir o=1 si on considère qu'il doit y avoir toujours une diode allumée. Il y a 8 possibilités.
Si on veut 9 possibilités dont toutes les diodes éteintes, alors il faut utiliser 9 comme multiplicateur et réutiliser la formule précédente. Ce qui donnerait :
i=int((input*9)/256)
o=(2**i)-1
Cela donne 28 ou 29 cas pour chacune de 9 possibilités de diodes.
Édit : tu as répondu pendant que j'écrivais mon message.
Oui. Mais tout dépend de si on veut avoir 8 ou 9 possibilités de diodes.