# Conversion d'un  réel en entier puissance de 10



## Anonyme (23 Octobre 2006)

Bonjour a tous !

Je commence a dévellopper des programmes sur MacOs X et je suis confronté
a un problème simple mais que j'ai du mal a résoudre.

Je travaille sur un bout de programme écrit en C.

J'essaye de convertir un nombre réel (ex : 0.057087) en entier puissance de dix, afin
de réaliser une simplication de fraction.

L'idée principale étant de multiplier le numérateur (ex : 0.057087) par des puissances de dix 

```
a=Numerateur*(pow(10,x)) ;
```
en parrallèle avec le dénominateur,

```
b=pow(10,x) ;
```
en fonction d'une intégrale "x", qui serait la puissance de dix.

Malheureusement je ne sais pas comment réaliser une fonction qui permètrait de multiplier un nombre "Numerateur" par des puissance de dix jusqu'a obtenir un nombre entier...

Ceci est important; puisque j'ai un résultat en virgule flottante que je doit traduire en entier (ex :  0.057087 = 57087 / 1000000)

Le programme que je souhaite réaliser est un programme de conversion d'unité de longueur internationale (en Millimètres) vers des Pieds *Entiers* et des pouces sous *forme de fraction*.

Si quelqu'un a une solution a proposer, je lui en serait reconnaissant


----------



## tatouille (23 Octobre 2006)

http://sourceforge.net/projects/calc


----------



## Anonyme (23 Octobre 2006)

tatouille a dit:


> http://sourceforge.net/projects/calc



J'ai trouvé dans ce programme la fonction dont j'avait besoin (convertir un nombre réel en fraction)







Il me reste seulement a trouver cette fonction dans les sources...

Merci !


----------



## tatouille (23 Octobre 2006)

cd src
grep -R "expression" .


----------



## Anonyme (23 Octobre 2006)

tatouille a dit:


> cd src
> grep -R "expression" .



J'aimerais que cela soit aussi simple que cela...


----------



## tatouille (23 Octobre 2006)

bah j'ai trouv&#233; 

indices :  ANDing ORing Bitwise


----------



## Anonyme (24 Octobre 2006)

tatouille a dit:


> bah j'ai trouvé
> 
> indices :  ANDing ORing Bitwise




Bon pour ce qui est de grep -r "expression" je n'arrive pas a le faire marcher.
J'ai lu le "man grep" mais je n'arrive pas a lancer de recherche.

Je suis sur un wiki http://rpgstats.com/wiki/index.php?title=Bitwise#top pour les opérateurs bit par bit...

J'ai les méninges qui chauffent... en plus j'ai une angine carabinée 

J'ai fouillé dans les sources, pour l'instant rien de concluant...

Bref en gros, je suis largué...:rose:


----------



## tatouille (24 Octobre 2006)

pose toi 5 secondes avec une feuille de papier 
multiplicateur / diviseur 
quelle est "le rapport" entre un multiplicateur et un diviseur , un num&#233;rateur et un d&#233;nominateur ?

tu as juste un tout petit probl&#232;me de logique sur quelque chose de super simple
alors tu mets &#231;a &#224; plat et surtout tu quittes ton clavier et ton &#233;cran


----------



## Anonyme (27 Octobre 2006)

tatouille a dit:


> pose toi 5 secondes avec une feuille de papier
> multiplicateur / diviseur
> quelle est "le rapport" entre un multiplicateur et un diviseur , un numérateur et un dénominateur ?



Bonjour.

Le rapport sert surtout pour la simplification.
En fait le problème que j'ai c'est plutôt de créer une itération ou l'on multiplie un nombre par 10
jusqu'a temps qu'il ne soit plus du type float.
Une des solutions c'est de convertir le type float en chaine de caractère, puis de l'analyser...


Bref Il va falloir que je me démerde... 

Merci.

P.S: J'ai regardé sur ton site system info et je me demandais si ton logiciel récupère la vitesse du processeur en le demandant a la machine ou en regardant dans un fichier....


----------



## tatouille (27 Octobre 2006)

soulard.morgan a dit:


> Bonjour.
> 
> Le rapport sert surtout pour la simplification.
> En fait le probl&#232;me que j'ai c'est plut&#244;t de cr&#233;er une it&#233;ration ou l'on multiplie un nombre par 10
> ...



pourquoi faire simple quand on peut faire n'importe quoi : str et des float ????????????
ptain c'est simple ton truc tu as appris ca a la petite ecole ...



 man 3 sysctl

autre approche avec exec


```
#include <stdio.h>
#include <sys/param.h>
#include <sys/sysctl.h>

int main(void)
{
    char machine[64];
    int mem_total;
    size_t len;
    
    len = sizeof(machine);
    sysctlbyname("hw.machine", &machine, &len, NULL, 0);
    
    len = sizeof(mem_total);
    sysctlbyname("hw.physmem", &mem_total, &len, NULL, 0);
    
    printf("%s : %iM \n",machine, (mem_total/1048576));
    
    return 0;
}
```


----------



## tantoillane (4 Novembre 2006)

En parlant de calculs, vous savez comment je peux mettre la conjecture de Syracuse sous forme d'un petit programme. J'ai r&#233;ussi &#224; le faire avec ma TI-83, mais le processeur ultra puissant de 6 Mhz ne me permet pas de  d&#233;marrer depuis une puissance de 10 ou 12 :rateau:

Merci


----------



## tatouille (4 Novembre 2006)

```
def is_even(x):
    if (x%2 == 0)
        return True 
    return False

def is_odd(x):
    if  is_even(x) is True:
        return False
    return True

def conjecture(n)
  while n > 1:
    print n
    if is_odd(n) is True:
      n = 3 *n + 1
    else:
     n =  n / 2
  print n
```


----------



## tantoillane (4 Novembre 2006)

je pense qu'il faut que je retourne dans le sujet plus basiques mais pour ex&#233;cuter &#231;a le terminal ne suffit pas ?

:rose:


----------



## tantoillane (17 Septembre 2008)

tantoillane a dit:


> je pense qu'il faut que je retourne dans le sujet plus basiques mais pour exécuter ça le terminal ne suffit pas ?
> 
> :rose:




Il y a un bug dans ton fichier python 


```
acme12:~/Desktop> python python.py
  File "python.py", line 1
    def is_even(x):
    ^
SyntaxError: invalid syntax
```
A moins que je ne sache pas comment on lance un fichier python ... :mouais:


----------



## tatouille (18 Septembre 2008)

```
def is_even(x):
    if (x%2 == 0):
        return True 
    return False

def is_odd(x):
    if  is_even(x) is True:
        return False
    return True

def conjecture(n):
  while n > 1:
    print n
    if is_odd(n) is True:
      n = 3 *n + 1
    else:
     n =  n / 2
  print n
```


----------



## tantoillane (19 Septembre 2008)

Ce coup si le programme à l'air d'être tout bon, mais comment est-ce que je fais pour donner une valeur à x.
Car aussitôt lancé, il est fini

$ > python phyton.py
_une demie seconde_
$ > 

Et rien d'autre ?


----------

