AFFICHAGE EN BASE 2 D'UN NOMBRE DONNÉ EN BASE 10

asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005 - 3 déc. 2004 à 07:43
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 - 4 déc. 2004 à 11:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27938-affichage-en-base-2-d-un-nombre-donne-en-base-10

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
4 déc. 2004 à 11:05
voilà moi, comment j'ai procédé : http://www.cppfrance.com/code.aspx?ID=26901
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 déc. 2004 à 22:45
Sur les calculatrices on écrit ça EE mais deux petits E majuscules ^^...

pour les bases de plus que 16 faut commencer par grouper dans un tableau de char ou de int...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
3 déc. 2004 à 22:31
c'est pour l'écriture dite scientifique des nombres.

si tu écris 5e2 ou 5E2 ça revient à écrire:

5 * 10^2 (5 fois 10 exposant 2) = 500

c'est pratique quand tu joues avec des nombres très grands ou très petits:

3e9 = 3 milliards
3e-9 = 3 milliardièmes (3 * 10^-9)

tu peux écrire tes nombres comme ça en C++ aussi, et c'est pfs pratique (par exemple, la constante de Kavendish (gravitation) vaut: 6.67e-11, c'est plus pratique à écrire que 0.0000000000667 :) et c'est même plus facile à relire.
kanagan Messages postés 26 Date d'inscription mercredi 17 décembre 2003 Statut Membre Dernière intervention 29 mars 2006
3 déc. 2004 à 22:26
Salut Kirua,
euh je suis débutant alors j'ai pas tout compris ce que tu as écrit, ça devient compliquer :-(
C'est quoi le e/E ?
Sinon pour tester le +/- je vais essayer mais je ne te garantis rien ;-)
kanagan Messages postés 26 Date d'inscription mercredi 17 décembre 2003 Statut Membre Dernière intervention 29 mars 2006
3 déc. 2004 à 22:16
Salut Saros,
alors normalement je pense tu peux faire ça avec les bases < 10, par contre pour les autres (comme la base hexa) je ne pense pas que ça marche...
Dites moi si je me trompe.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
3 déc. 2004 à 22:10
vérifie que la chaîne de caractères ne contient que des 0-9, avec éventuellement un + ou un - devant. je suppose que tu ne gères pas les nombres non-entiers, donc tu ne dois pas vérifier le . ou le e/E. ça devrait aller non? commence par tester le +/- facultatif en début de chaîne, puis pour le reste vérifie que chaque fois les caractères sont compris entre '0' et '9' (ou '1' et '0', mais je pense que c'est le premier cas) pour balayer l'intervalle ASCII des chiffres.
kanagan Messages postés 26 Date d'inscription mercredi 17 décembre 2003 Statut Membre Dernière intervention 29 mars 2006
3 déc. 2004 à 22:04
Merci coucou747, je vais essayer de modifier ma fonction afin qu'elle me retourne une chaine.

Sinon tu as dit que je devrai tester si l'argument que je recupere est un nombre, mais comment je peux faire ça ?
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
3 déc. 2004 à 22:01
j'aurais plutôt fait comme ça:

string ToBase2(unsigned int n)
{
string str = "";
while(n > 0)
{
//n & 1 retourne vrai si le bit de poids faible est allumé, sinon faux
str = ((n & 1) ? '1' : '0') + str;
n >>= 1; //revient à diviser n par 2 (n/=2)
}
return str;
}


comme ça on n'utilise que des opérateurs binaires et c'est itératif (plus rapide que récursif)
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
3 déc. 2004 à 21:09
J'ai bien aimé la méthode... que j'ai trouvé originale...
On peut faire comme ça avec n'importe quelle base ?
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 déc. 2004 à 20:19
Les arguments c'est pas tellement pourri de faire comme ça, le truc c'est que tu devrais tester si ton argument est vraiment un nombre...

Moi cequi me dérange, c'est que ta fonction n'a pas de retour... Pourquois ne pas lui faire renvoyer une chaine ? ça permetrais de faire du code réutilisable.....
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
3 déc. 2004 à 17:54
Je pense que ton code peut être amélioré au niveau de arg[]. En fait si il n'y a pas de chiffre entré, au lieu d'afficher une erreur, demande d'entrer un chiffre. Ce qui serai moins chian pour qqu qui lance le prog en cliquant dessus, il ne serai pas obligé de paC sur la consol pour l'ouvrir.

Bonne continuation
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 déc. 2004 à 17:49
Mais si ca marche, essaie depuis une commande dos et tu verras
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
3 déc. 2004 à 12:47
Ah dsl t'es sous linux j'avais pas vu lol
Donc c peut etre différent (j'ai jamais programmé sous linux) mais en tout cas sous win ca marcherait pas
a+
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
3 déc. 2004 à 12:45
ex quand tu clikes sur sur un *.doc l'application par défaut (Word) se lance et win lui file comme paramètre (en utilisant argv[]) le nom du fichier "associé" à l'éxécutable

si tu veux que l'utilisateur saississe un nb au clavier utilise scanf ou cin (respectivement C et C++ standard)
kanagan Messages postés 26 Date d'inscription mercredi 17 décembre 2003 Statut Membre Dernière intervention 29 mars 2006
3 déc. 2004 à 11:43
Oui j'utilise argv, ce qui me permet de récuperer le nombre sur la ligne de commande du terminal.
Pourquoi ce n'est pas bien ?
Qu'est ce que tu entends par fichiers associés à l'exécutable? J'ai pas compris dsl...
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
3 déc. 2004 à 07:43
Pour récupérer le nombre à convertir t'utilises argv?
C'est pas plutot les fichiers qui sont associés à l'éxécutable??
Rejoignez-nous