Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3781 connectés 

 


Dernière réponse
Sujet : [ algo ] - convertir un reel en fraction.... 0.5 --> 1/2
ZuL

The_chosen_one a écrit a écrit :

g tue le tmoic avec mon idee ou koi ?
elle est pas bonne ?  




 
nan j etais effectivement parti en wikend :)
merci beaucoup j V appliquer ca dès demain :)


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
ZuL

The_chosen_one a écrit a écrit :

g tue le tmoic avec mon idee ou koi ?
elle est pas bonne ?  




 
nan j etais effectivement parti en wikend :)
merci beaucoup j V appliquer ca dès demain :)

Krueger Ben si, mais ils sont peut-être partis en week-end. :D
The_chosen_one g tue le tmoic avec mon idee ou koi ?
elle est pas bonne ?
Krueger :jap:
The_chosen_one slt, je passai juste par ce forum ...
pour les valeurs du genre 1.33333333333333, le truc, c didentifier :
(bon, c juste un algo, suis pas une bete en prog)
 
a = 1.333333333333
10*a = 13.33333333333
10*a = 12 + a
a = 12/9
on simplifi -> a = 4/3
 
voila :) :hello:
 
EDIT :
joubliai : pour savoir sil fo multiplier par 10, 100 ou plus, il fo reperer la taille de la sequence ki se repete, par exemple sur 4.321553215532155 il fo faire :
 
a = 4.321553215532155
100000*a = 432155.3215532155 car la sequence fait 5 chiffres
100000*a = 432151 + a
a = 432151/99999
on simplifi -> a = 432151/99999 (merci maple)  :lol: putain g reussi a trouver un nb premier =)
...etc ...

 

[jfdsdjhfuetppo]--Message édité par The_chosen_one--[/jfdsdjhfuetppo]

ZuL ceci dit ca merde toujours puisque la fonction Mod de VB ne prend que des doubles (mes entiers sont + grands que ca)
la division entiere idem
donc C caca
VB  :gun:  
 
pour info je fais :  
 
xp : pour valeur = 1.268
je recupere partie entiere : 1
je recupere partie reelle 1.268-1  -->  0.268
je recupere la longueur partie reelle : len(reelle)-2  -->3
je fais valeur*10^3/10^3  ---> 1268/1000
j'applique l'algo d'euclide pour le pgcd  
je divise numérateur et denominateurs par le pgcd
 
donc en fait ca tourne niquel pour des 0.5  0.225 etc...
par contre pour des 1.6666666666666666667 (style 5/3   ca arrondit a la fin)  ca chie lamentablement...paske VB il a du mal a traiter un   1E16  :sweat:
Krueger Oups, désolé j'avais pas bien lu le sujet. :sarcastic:
verdoux

Krueger a écrit a écrit :

Moi j'aurais pas cherché loin, j'aurais défini des objets fractions ainsi que les opérations nécessaires dessus.  




Je vois pas le rapport.

Krueger Moi j'aurais pas cherché loin, j'aurais défini des objets fractions ainsi que les opérations nécessaires dessus.
ZuL

titoine42 a écrit a écrit :

 
 
pas bo le Variant  :gun:  




 
nan pas beau mais C le long est pas assez long...

Titoine42

zul a écrit a écrit :

rhaaaaaaaaa j'suis blasé...en fait le seul pbleme C que mon pgcd etait définit en long et non en variant comme ts les autres...
bon ca tourne :D  




 
pas bo le Variant  :gun:

ZuL rhaaaaaaaaa j'suis blasé...en fait le seul pbleme C que mon pgcd etait définit en long et non en variant comme ts les autres...
bon ca tourne :D
ZuL beh le probleme C que j'ai des depassement de capacités vu que je manipule des E16
ca tourne très bien avec des 1/2 1/4 et tt et tt
mais des que j'ai des  1.3333333333 ou des conneries ds le style ca patauge
HelloWorld Mon premier programme sur calculette! :lol:
L'algo utilisé par ma calcu (je l'avais retrouvé :D) est simpliste :
 
genre : 0.5
il multiplie par 10 puis il simplifie vite fait :
0.5 * 10 => 5/10 simplifié en 1/2
pour simplifier, il cherche juste si c'est divisible par 2, 3 et 5 je crois
 
bref des exemples pour mieux comprendre:
 
0.25 => 25/100    simplifie par 5   => 5/20    => par 5    =>1/4
 
c'est rapide mais ca chie assez facilement :
 
0.333333   => 333333/1000000 ... pas de simplification, on garde ca ! :(
 
alors j'avais codé un algo "brute force"
excuse pour mon VB, c'est tres loin ...

Code :
  1. Dim a As Integer;
  2. Dim b As Integer;
  3. Dim egal As boolean;
  4. Dim nombre As Double;   'le nombre a trouver
  5. a = 1;
  6. b = 1;
  7. egal = false;
  8. Loop
  9.     if(a/b = nombre) then
  10.         Exit Do
  11.     else
  12.         if (a/b > nombre then
  13.             b = b+1;
  14.         else
  15.             a = a + 1;
  16.     end if
  17. Do


vala !
sur calculette ca ramait, mais sur PC ca doit etre gourmand mais ca va assez vite ... mais peut etre que sur du grand nombre, executé beaucoup de fois et en VB, ca va etre lent ...

Rawhead rex Tu appliques quoi comme algo pour transformer ton decimal en fraction ??
C'est un truc idoine de VB et si oui y fait quoi ??
ZuL euh en fait je vois pas trop
disons qu'a ma fonction on peut lui passer 0.5 comme on peut lui passer 1.66666666666666666667
dans le premier cas ca tourne niquel........dans le deuxième ca explose parce que les fonction prédéfinies de VB de divisions entières ne sont pas prévues pour de graaaaaaaaands entiers...
 
et je comprend pas du tout ton explication :D
Rawhead rex J'imagine que ce qui te fait planter c'est que tu effectues une decomposition en nombres premier du total :
1.66E16/3.54E8=decomp(1.66E16)+"/"+decomp(3.54E8)
 
Si c'est ca, avant de decomposer le nombre tu separe mantisse et exposant et tu effectue la decomposition sur chacun :
decomp(166)+"/"+decomp(354)+decomp(1E16/1E8)
 
Si c'est ce que tu fais deja et qu'il ne veut pas traiter les grands exposants: tu fais un switch sur l'exposant auxquel tu adjoint des valeurs precalculees que t'auras stockes dans un tableau de reference:
 
if(exposant=8) then affiche "2^8*5^8"
 
J'espere que ca pourras t'aider
ZuL bon en fait j'ai un debut de méthode qui tourne mais ce con de VB m'emmerde
 
en fait il a du mal a manipuler les grands grands entiers...style j'ai deux variant (ds le style 1.66E16) et jepeux les diviser (/), mais la division entiere et le modulo me font des stacks overflow  [:tomawack]
ZuL beh au lieu d'afficher, pour mon polynome de newton interpolé, 1.66E-3x^2 je voudrais afficher (5/3)x^2
(C un exemple, pas fait gaffe aux valeurs)
Lord II Que va t'apporter cette nouvelle notation ??? ( en gros en a tu vraiment besoin)
ZuL allez aideeeez moué...
Ventilo :lol:  
 :eek2:  :hello:
Minouchette [:xx_xx]
ZuL [:tomawack]  
 
 
 [:vancrayenest]
Meganne [:rofl]
Minouchette [:xx_xx]
ZuL accessoirement.y'a pas une fonction prédéfinie de VB qui le fait ???
ZuL comment qu'on fait ???

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)