Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
6305 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°315878
haazheel
Posté le 23-02-2003 à 16:26:01  profilanswer
 

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

mood
Publicité
Posté le 23-02-2003 à 16:26:01  profilanswer
 

n°315894
Tamahome
⭐⭐⭐⭐⭐
Posté le 23-02-2003 à 17:00:20  profilanswer
 

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*

n°315895
gloop
Posté le 23-02-2003 à 17:04:04  profilanswer
 

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
n°315909
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-02-2003 à 17:34:18  profilanswer
 

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
n°316110
haazheel
Posté le 24-02-2003 à 01:21:47  profilanswer
 

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
n°316157
antp
Super Administrateur
Champion des excuses bidons
Posté le 24-02-2003 à 09:20:33  profilanswer
 

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
n°316164
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-02-2003 à 09:33:07  profilanswer
 

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)
n°316166
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-02-2003 à 09:38:47  profilanswer
 

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)
n°316171
lorill
Posté le 24-02-2003 à 09:43:27  profilanswer
 

Harkonnen a écrit :

plus propre :


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

n°316173
antp
Super Administrateur
Champion des excuses bidons
Posté le 24-02-2003 à 09:43:54  profilanswer
 

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
mood
Publicité
Posté le 24-02-2003 à 09:43:54  profilanswer
 

n°316186
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-02-2003 à 09:49:00  profilanswer
 

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)
n°316187
lorill
Posté le 24-02-2003 à 09:50:45  profilanswer
 

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:

n°316197
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-02-2003 à 09:59:21  profilanswer
 

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)
n°316200
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-02-2003 à 10:00:39  profilanswer
 

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)
n°316245
haazheel
Posté le 24-02-2003 à 10:57:42  profilanswer
 

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?? :??:

n°316274
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-02-2003 à 11:18:49  profilanswer
 

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)
n°316277
Kristoph
Posté le 24-02-2003 à 11:20:31  profilanswer
 

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.

n°316389
BifaceMcLe​OD
The HighGlandeur
Posté le 24-02-2003 à 12:25:46  profilanswer
 

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
n°316393
antp
Super Administrateur
Champion des excuses bidons
Posté le 24-02-2003 à 12:28:19  profilanswer
 

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
n°316420
BifaceMcLe​OD
The HighGlandeur
Posté le 24-02-2003 à 13:10:53  profilanswer
 

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

n°317035
haazheel
Posté le 25-02-2003 à 01:00:45  profilanswer
 

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!!

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
Transformer un programme JAVA en fichier .EXE[Access] j'arrive pas a transformer un string
compteur free: changer la couleur des chiffrestransformer un nombre en chaine de charactères en FORTRAN
Une liste de valeurs acceptables pour des entiersLecture d'un fichier texte contenant des entiers...
additionner des chiffres en PHPcomment transformer un fichier .max de 3d studio max en fichier .ase ?
Transformer un makefile en workspace dsw pour visual, possible ?[C]Precision de 10 chiffre apres la virgule d'un float
Plus de sujets relatifs à : transformer des entiers à 1 chiffre (1,2,3...) en 2 chiffres (01,02..)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)