transformer des entiers à 1 chiffre (1,2,3...) en 2 chiffres (01,02..)

transformer des entiers à 1 chiffre (1,2,3...) en 2 chiffres (01,02..) - C++ - Programmation

Marsh Posté le 23-02-2003 à 16:26:01    

Salut,
 
tout est dans le sujet, je fais ça comment?
 
Voici mon code:
 

Code :
  1. for (int i=1; i<100 ; i++)
  2.         {
  3.                 NumeroJoueur->AddItem(i,this);
  4.         }


 
J'ai essayé quelques trucs:

Code :
  1. for (int i=1; i<100 ; i++)
  2.         {
  3.                 if(i<10)
  4.                 {
  5.                           i = "0" + i;
  6.                 }
  7.                 NumeroJoueur->AddItem(i,this);
  8.         }


 
et d'autres choses dans le même style (genre en passant par une autre variable j) mais ça s'affiche pas bien dans le ComboBox...
 
Tout ce qui est en dessous de 10 ça merde, mais au dessus ça fonctionne bien...
 
Merci

Reply

Marsh Posté le 23-02-2003 à 16:26:01   

Reply

Marsh Posté le 23-02-2003 à 17:00:20    

Salut,
 
en C standard (ou posix au pire), i vaudra toujours 1 et pas 01, vu que c'est un int.
 
Si tu veux "01", il faut le transformer en char*

Reply

Marsh Posté le 23-02-2003 à 17:04:04    

c'est juste un probleme d'affichage que t'as.
si t'es en C++, tu peux faire un truc comme ca:
 

Code :
  1. std::ostringstream stream;
  2.    stream.width (2);
  3.    stream.fill ('0');
  4.    stream << i;

 
et tu récuperes une string par stream.str () pour l'afficher


Message édité par gloop le 23-02-2003 à 17:04:51
Reply

Marsh Posté le 23-02-2003 à 17:34:18    

Ouais enfin là il utilise apparemment C++Builder et les AnsiString (enfin je suppose) donc autant continuer avec les AnsiString :D
 
NumeroJoueur->AddItem(i < 10 ? "0" + AnsiString(i) : i, this);  
 
(oui je sais c'est pas très beau mais bon...)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-02-2003 à 01:21:47    

antp a écrit :

Ouais enfin là il utilise apparemment C++Builder et les AnsiString (enfin je suppose) donc autant continuer avec les AnsiString :D
 
NumeroJoueur->AddItem(i < 10 ? "0" + AnsiString(i) : i, this);  
 
(oui je sais c'est pas très beau mais bon...)
 


 
Décidement j'en apprends tous les jours sur ce forum...
 
cette ligne, elle s'explique comment?
 

Code :
  1. NumeroJoueur->AddItem(i < 10 ? "0" + AnsiString(i) : i, this);


 
Si i<10
Alors (?) "0" + AnsiString(i)
Sinon (:) i
 
C'est ça?
 
Ce type de structure, on peut mettre ça où on veut, ou bien seulement dans les structures de type Objet->Action(...)?
 
Et pourquoi c'est pas très beau?


Message édité par haazheel le 24-02-2003 à 01:22:19
Reply

Marsh Posté le 24-02-2003 à 09:20:33    

oui, c'est ça ;)
 
L'opérateur ternaire (trois opérandes) "?" c'est un si...alors...sinon, c'est un truc classique du C, tu le mets où tu veux.
Ça a parfois tendance à rendre le code un peu illisible, donc faut faire gaffe, j'emploie ça très rarement.
 
condition ? si vrai : si faux


Message édité par antp le 24-02-2003 à 09:21:06

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-02-2003 à 09:33:07    

antp a écrit :

Ouais enfin là il utilise apparemment C++Builder et les AnsiString (enfin je suppose) donc autant continuer avec les AnsiString :D
 
NumeroJoueur->AddItem(i < 10 ? "0" + AnsiString(i) : i, this);  
 
(oui je sais c'est pas très beau mais bon...)
 


:ouch:
 
[:tapai]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-02-2003 à 09:38:47    

plus propre :
 

Code :
  1. if (i < 10) {
  2.    AddItem("0" + AnsiString(i), this);
  3. }else{
  4.    AddItem(i, this);
  5. }


 
:ange:
     


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-02-2003 à 09:43:27    

Harkonnen a écrit :

plus propre :


perso je préfère la version ?:  :o

Reply

Marsh Posté le 24-02-2003 à 09:43:54    

je trouve ça moche de foutre les accolades sur la même ligne qu'autre chose :o
(je fous les accolades seules sur une ligne, comme les begin/end du Pascal :D)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-02-2003 à 09:43:54   

Reply

Marsh Posté le 24-02-2003 à 09:49:00    

lorill a écrit :


perso je préfère la version ?:  :o  


de la part d'un amateur d'un langage ou les classes & fonctions  sont délimitées par des tabulations, ça ne m'étonne pas !
 
[:dehors]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-02-2003 à 09:50:45    

Harkonnen a écrit :


de la part d'un amateur d'un langage ou les classes & fonctions  sont délimitées par des tabulations, ça ne m'étonne pas !


 :pfff:  
 
LES BLOCS BORDEL !
ca se moque et ca ne sait pas :o
 
 :hello:

Reply

Marsh Posté le 24-02-2003 à 09:59:21    

antp a écrit :

je trouve ça moche de foutre les accolades sur la même ligne qu'autre chose :o
(je fous les accolades seules sur une ligne, comme les begin/end du Pascal :D)


au début je faisais comme toi, mais finalement je me suis rendu compte que je trouvais ça plus lisible : le corps de la fonction ou du test semble mieux intégré à la condition ou déclaration de fonction.
 
de toute façon, c'est purement subjectif :d


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-02-2003 à 10:00:39    

lorill a écrit :


 :pfff:  
 
LES BLOCS BORDEL !
ca se moque et ca ne sait pas :o
 
 :hello:  


je savais bien qu'il existait un mot pour ça [:ddr555]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-02-2003 à 10:57:42    

Harkonnen a écrit :


de la part d'un amateur d'un langage ou les classes & fonctions  sont délimitées par des tabulations, ça ne m'étonne pas !
 
[:dehors]


 
et c'est koi comme langage?? :??:

Reply

Marsh Posté le 24-02-2003 à 11:18:49    

haazheel a écrit :


 
et c'est koi comme langage?? :??:  


tu cliques sur chaque sous-cat en haut du forum, et le langage en question est celui dont les topics tiennent sur une demi-page [:ddr555]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-02-2003 à 11:20:31    

Harkonnen a *crit :


tu cliques sur chaque sous-cat en haut du forum, et le langage en question est celui dont les topics tiennent sur une demi-page [:ddr555]


 
ADA ? Cobol ? :D
 
Non, c'est du Python, dont on parle.

Reply

Marsh Posté le 24-02-2003 à 12:25:46    

lorill a écrit :


perso je préfère la version ?:  :o  


Sauf qu'en l'occurrence, il me semble qu'elle est fausse. Les 2 valeurs de chaque côté du deux-points doivent avoir le même type (ou au moins des types compatibles). Et là, int d'un côté et AnsiString de l'autre, le compilateur risque de ne pas trop apprécier...
Du coup, il faut sans doute mieux écrire :

Code :
  1. NumeroJoueur->AddItem(((i < 10) ? "0" + AnsiString(i)
  2.                                 : AnsiString(i)),
  3.                       this);


Et petit rappel : l'indentation joue un très grand rôle dans la lisibilité de l'opérateur ternaire...


Message édité par BifaceMcLeOD le 24-02-2003 à 12:26:32
Reply

Marsh Posté le 24-02-2003 à 12:28:19    

ha ouais en effet j'ai oublié l'AnsiString autour du i pour le second :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-02-2003 à 13:10:53    

:pfff: http://forum.hardware.fr/icones/icon13.gif Lâchez les fauves dans l'arène !
 
 
 :D

Reply

Marsh Posté le 25-02-2003 à 01:00:45    

antp a écrit :

ha ouais en effet j'ai oublié l'AnsiString autour du i pour le second :o


 
ce qui explique pourquoi ça marchait pas...
 
j'ai corrigé, ça fonctionne maintenant
 
Merci!!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed