# C et C++ > C > Contribuez >  Conversion de nombre en lettre

## _-Slash-_

Bonjour,

Voici une source permettant de convertir des nombres en lettres. Cela ne prend en compte que l'criture "franaise" (pas suisse/belge).



```

```

----------


## pfeuh

Salut,

Ca ne compile pas chez moi (codeblocks sur XP32), la fonction isnumber n'est pas trouve. J'en ai vite crit une et a compile. Quand on passe en paramtre "798a123", le "a" est superbement ignor. Quand on ne passe pas de paramtre, il y a une erreur 1 sans autre explication. Il faut peut-tre fignoler la gestion de l'argument.



```
-> 123456 s'écrit : cent vingt-trois mille quatre cent cinquante-six
```


Quand aux rgles, je ne suis pas spcialiste, mais je ne savais pas qu'il y fallait un trait d'union entre cinquante et six. le peu que j'ai test (20,80,81...) fonctionne correctement.



```

```

A+

Pfeuh

----------


## gangsoleil

Bonjour,




> Quand aux rgles, je ne suis pas spcialiste, mais je ne savais pas qu'il y fallait un trait d'union entre cinquante et six.


Il faut un trait d'union entre tous les nombres inferieurs a cent. Donc cinquante-six, mais cent six.


Sinon, en remplacant isnumber qui n'existe pas par isdigit(), ca semble bien fonctionner.

Edit : Tu as une erreur sur vingt et cent : suivis de mille, ils sont invariables, mais suivis de milliers, millions, milliards, etc., ils prennent bien un s : le premier exemple est correct, pas le second.


```

```

----------


## _-Slash-_

> Salut,
> 
> Ca ne compile pas chez moi (codeblocks sur XP32), la fonction isnumber n'est pas trouve. J'en ai vite crit une et a compile.


En effet isnumber n'est pas dans le C Standard mais dans les extensions BSD. Je vais corriger cela.




> Quand on passe en paramtre "798a123", le "a" est superbement ignor.


C'est souhait.




> Quand on ne passe pas de paramtre, il y a une erreur 1 sans autre explication. Il faut peut-tre fignoler la gestion de l'argument.


Etonnant, moi a me donne "l'usage".
Qu'entends-tu par fignoler la gestion de l'argument ?

Pour ce qui est des traits d'unions depuis la rforme de 1990 il faudrait en mettre partout.




> Edit : Tu as une erreur sur vingt et cent : suivis de mille, ils sont invariables, mais suivis de milliers, millions, milliards, etc., ils prennent bien un s : le premier exemple est correct, pas le second.


Exact je n'avais pas vu cette rgle, je vais corriger cela.

----------


## gangsoleil

> En effet isnumber n'est pas dans le C Standard mais dans les extensions BSD. Je vais corriger cela.


Pas BSD, mais OSx, ou peut-etre les BSD de l'epoque. En tout pas, cette fonction n'est pas presente sur OpenBSD 4.8.

Est-ce que cette fonction est tres differente de isdigit, qui elle est une fonction C standard ?

----------


## _-Slash-_

> Pas BSD, mais OSx, ou peut-etre les BSD de l'epoque. En tout pas, cette fonction n'est pas presente sur OpenBSD 4.8.
> 
> Est-ce que cette fonction est tres differente de isdigit, qui elle est une fonction C standard ?


Bizare pour OpenBSD 4.8. La fonction est trs proche comme le prouve la page de man (j'ai mis isnumber par mgarde) :



```

```

----------

