CONVERTIR (CHAINE -> NOMBRE) ET (NOMBRE -> CHAINE) [DEV-C++]
MangaII
Messages postés129Date d'inscriptiondimanche 9 décembre 2001StatutMembreDernière intervention12 janvier 2009
-
24 mars 2002 à 08:58
fabiencpp
Messages postés18Date d'inscriptionjeudi 7 août 2003StatutMembreDernière intervention13 août 2003
-
12 août 2003 à 12:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
fabiencpp
Messages postés18Date d'inscriptionjeudi 7 août 2003StatutMembreDernière intervention13 août 2003 12 août 2003 à 12:21
Voila une solution tres bien pour recuperer chaque digit d'un nombre
void display_nb(int nb)
{
char c;
if(nb < 0)
{
write(1,'-',1);
nb = -nb;
}
if(nb > 10)
display_nb(nb/10);
c = nb%10 + '0';
write(1,&c,1); // peut etre remplacer parce que l'on veut fichier,memoire etc
}
Dun23
Messages postés8Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention23 mai 2003 23 mai 2003 à 11:05
Tiens, j'oubliais, un truc pour passer d'un entier à un char:
int num=3; // c'est un exemple
char monchar;
monchar = num + '0';
L'astuce, on ajoute à notre entier la valeur du code ASCII du chiffre 0.
Notre char se voit donc attribuer la valeur ASCII du caractère 3;
Dun23
Messages postés8Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention23 mai 2003 23 mai 2003 à 11:01
Bon, pour garder la partie entière d'un nombre après une division, il y a plus simple. Bon, Le % fonctionne très bien et c'est à priori le mieux pour ce que tu fais. Sinon, il y a les fonctions floor et ceil (je sais plus quelle librairie il faut utiliser) qui renvoient un entier, soit directement inférieur, soit directement supérieur. Le transtypage fonctionne aussi, cad que tu veux que le résultat soit un entier eg:
result = (int)(nombre/10);
Sinon, je connaissais pas cgvt, je vais essayertiens pour voir, p't'être amusant!
THEREALKILLER
Messages postés88Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention27 mars 2006 17 août 2002 à 20:54
pe t etre interessant mais ca ne sert a rien
THEREALKILLER
Messages postés88Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention27 mars 2006 17 août 2002 à 20:54
pe t etre interessant mais ca ne sert a rien
cs_thitoune
Messages postés124Date d'inscriptionmardi 19 février 2002StatutMembreDernière intervention 7 mars 20042 25 mars 2002 à 21:07
bon, c'est pas pour faire le beau, mais il y a beaucoup plus simple que tout ce que vous dites, regardez plutot (c pas moi qui l'ai fait) mais il n'empêche :
/* gcvt example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
char buffer [20];
gcvt (1365.249,6,buffer);
puts (buffer);
gcvt (1365.249,3,buffer);
puts (buffer);
return 0;
}
Output:
1365.25
1.37e+003
djweirdo
Messages postés2Date d'inscriptionsamedi 14 octobre 2000StatutMembreDernière intervention25 mars 2002 25 mars 2002 à 17:58
Le commentaire précédent est très bon, mais tu devrais essayer d'utiliser les Logs et les puissances de 10, com ca tu pourrais boucler et ne pas limiter ta fonction aux unités de mille.
En plus c'est une fonction intéressante car tu peut y insérer un espace en guise de séparateur de millier....
Bon courage..
MangaII
Messages postés129Date d'inscriptiondimanche 9 décembre 2001StatutMembreDernière intervention12 janvier 2009 24 mars 2002 à 08:58
Salut !
Pas mal com idée ! mais a mon avis, c un peu long pour ce que tu fé !
si com tu le dit tu ve écrire ta valeur sous forme de texte, il est plus simple d'utiliser printf (ou fprintf), qui écrira directement la valeur.
Et pour ce qui est de décortiquer (com tu dit), il y a bcp plus simple :
int a,b,c,d; // initialisés en tant que INT com ca, pas de virugles !
a = nombre/1000;
nombre= nombre%1000; // renvoi le reste de la division entière !
b=nombre/100;
nombre=nombre%100;
c=nombre/10;
nombre=nombre%10;
d=nombre;
et a mon avis, y'a encore moyen de faire plus cour ! mais là, c la seule idée que j'ai eu !
A+
NICO
12 août 2003 à 12:21
void display_nb(int nb)
{
char c;
if(nb < 0)
{
write(1,'-',1);
nb = -nb;
}
if(nb > 10)
display_nb(nb/10);
c = nb%10 + '0';
write(1,&c,1); // peut etre remplacer parce que l'on veut fichier,memoire etc
}
23 mai 2003 à 11:05
int num=3; // c'est un exemple
char monchar;
monchar = num + '0';
L'astuce, on ajoute à notre entier la valeur du code ASCII du chiffre 0.
Notre char se voit donc attribuer la valeur ASCII du caractère 3;
23 mai 2003 à 11:01
result = (int)(nombre/10);
Sinon, je connaissais pas cgvt, je vais essayertiens pour voir, p't'être amusant!
17 août 2002 à 20:54
17 août 2002 à 20:54
25 mars 2002 à 21:07
/* gcvt example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
char buffer [20];
gcvt (1365.249,6,buffer);
puts (buffer);
gcvt (1365.249,3,buffer);
puts (buffer);
return 0;
}
Output:
1365.25
1.37e+003
25 mars 2002 à 17:58
En plus c'est une fonction intéressante car tu peut y insérer un espace en guise de séparateur de millier....
Bon courage..
24 mars 2002 à 08:58
Pas mal com idée ! mais a mon avis, c un peu long pour ce que tu fé !
si com tu le dit tu ve écrire ta valeur sous forme de texte, il est plus simple d'utiliser printf (ou fprintf), qui écrira directement la valeur.
Et pour ce qui est de décortiquer (com tu dit), il y a bcp plus simple :
int a,b,c,d; // initialisés en tant que INT com ca, pas de virugles !
a = nombre/1000;
nombre= nombre%1000; // renvoi le reste de la division entière !
b=nombre/100;
nombre=nombre%100;
c=nombre/10;
nombre=nombre%10;
d=nombre;
et a mon avis, y'a encore moyen de faire plus cour ! mais là, c la seule idée que j'ai eu !
A+
NICO