FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage haut niveau(C, Pascal...)


  [C++][API] Convertir char en float

 




Overclocking : Xyala, 1 utilisateur anonyme et 9 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++][API] Convertir char en float

n°2915
dekriss
Posté le 23-05-2004 à 15:52:47  profilanswer
 

Bjr
 
J'ai un problème j'ai une chaine de caractere buf[25]qui recupere des nombres à virgules j'ai donc essayer de faire une fonction qui prend la partie entiere puis qui rajoute la partie decimal mais cela ne marche pas

Code :
  1. float puissance (int a)
  2. {
  3. float puiss;
  4.  puiss=0.1;
  5. for(int b=1;b!=a+1;b++)
  6. {
  7.  puiss=puiss*.1;
  8. }
  9. return puiss;
  10. }
  11. float transformation(char aeuro[25])
  12. {
  13. int a;
  14. float renvoi;
  15. a=0;
  16. renvoi=0;
  17. char test;
  18. while (test !='.' && a!=25) // Regarde jusqu'ou il y a la virgule
  19. {
  20.  test=aeuro[a];
  21.  a++;
  22. }
  23. if (a==25)
  24. {
  25.  renvoi=atoi(aeuro);
  26. }
  27. else
  28. {
  29.  plus=atoi(aeuro);
  30.  plus2=decimal(a,aeuro);
  31.   renvoi=plus+plus2;
  32. }
  33. return plus2;
  34. }
  35. float decimal(int a,char aeuro[25])
  36. {
  37. char test[25];
  38. GetDlgItemText(Dlg,IDC_FRANC,test,25);
  39. float puiss;
  40. float partdecimal;
  41. partdecimal=0;
  42. for(int b=strlen(test);b>a;b--)
  43. {
  44.    if(stricmp(0,test[b])==0)
  45.  {
  46.   plus=0;
  47.  }
  48.    if(stricmp("1",test[b])==0)
  49.  {
  50.   plus=1;
  51.  }
  52.    if(test[b]==2)
  53.  {
  54.   plus=2;
  55.  }
  56.    if(test[b]==3)
  57.  {
  58.   plus=3;
  59.  }
  60.    if(test[b]==4)
  61.  {
  62.   plus=4;
  63.  }
  64.    if(test[b]==5)
  65.  {
  66.   plus=5;
  67.  }
  68.    if(test[b]==6)
  69.  {
  70.   plus=6;
  71.  }
  72.    if(test[b]==7)
  73.  {
  74.   plus=7;
  75.  }
  76.    if(test[b]==8)
  77.  {
  78.   plus=8;
  79.  }
  80.    if(test[b]==9)
  81.  {
  82.   plus=9;
  83.  }
  84.  puiss=puissance(b);
  85.  puiss=puiss*plus;
  86.  partdecimal=partdecimal+puiss;
  87. }
  88. return partdecimal;
  89. }
  90. nombreenfloat=transformaion(buf)


 
Je voudrais savoir ce que vous pensez de mon code et me dire si il aut que je l'explose ou s'il faut que je le modifie

mood
Google
Posté le 23-05-2004 à 15:52:47  profilanswer
 

n°2916
nicodache
marmotte en chocolat concept ©
Posté le 23-05-2004 à 16:01:13  profilanswer
 

1. utilise des fonctions de traitement de chaine, ca t'aidera
2. évite les 36000 if(), ca pollue ton code inutilement
3. pseudo code rapide :

Code :
  1. trouver la virgule
  2. mettre ce que ya avant dans un float (si,si)
  3. passer la virgule
  4. indice = 0
  5. jusqu'a la fin {
  6.     indice++;
  7.     ton_float x 10;
  8.     ton_float += le premier chiffre que tu croise
  9. }
  10. ton_float = ton_float divisé par 10^indice /* indice = 3 -> divisé par 1000 */


 
ca ira tu crois ? ;)


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2917
Deadog
Dain Bramaged
Posté le 23-05-2004 à 16:04:16  profilanswer
 

utilise la fonction atof

n°2920
nicodache
marmotte en chocolat concept ©
Posté le 23-05-2004 à 16:13:40  profilanswer
 

et strtok aussi, pour trouver le . de séparation entre unités et décimales ;)


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2921
Deadog
Dain Bramaged
Posté le 23-05-2004 à 16:25:29  profilanswer
 

nan mais atof te feras tout tout seul :D

n°2922
nicodache
marmotte en chocolat concept ©
Posté le 23-05-2004 à 16:30:01  profilanswer
 

ha oué, c'est pas con [:dslam]
 
j'y avais meme po pensé :D
(note qu'il faut voir si atof comprend les string avec des ".", des ",", et si il se vautre pas quand il en croise plusieur :D


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2923
Deadog
Dain Bramaged
Posté le 23-05-2004 à 16:33:22  profilanswer
 

pour le . ou , ça dépend des variables locales, et kan y'en a plusieurs il retourne une erreur je pense


Message édité par Deadog le 23-05-2004 à 16:33:38
n°2924
Dr Lous
I see old password
Posté le 23-05-2004 à 18:05:32  profilanswer
 

houla tu cono pas la switch ^^


---------------
Oseras-tu m'affronter ?
n°3188
dekriss
Posté le 11-06-2004 à 14:30:14  profilanswer
 

MERCI BEAUCOUP

mood
Google
Posté le 11-06-2004 à 14:30:14  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage haut niveau(C, Pascal...)


  [C++][API] Convertir char en float

 

Hit Parade