begin process at 2012 05 27 13:18:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

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

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


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :affichage, binaire, décimal, base Niveau :Débutant Date de création :02/12/2004 Date de mise à jour :03/12/2004 20:43:31 Vu :4 127

Auteur : kanagan

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 Description

Ma première fonction qui affiche le résultat en base 2 d'un chiffre (en base 10) passé en argument. (sous Linux)
Si vous avez des conseils pour l'améliorer, n'hésitez pas, merci d'avance.  ;-)

Source

  • #include <stdio.h>
  • #include <stdlib.h>
  • /* Fonction qui transforme le Nombre en base 2 et l'affiche */
  • void base2 (int Nombre)
  • {
  • /* Si le Nombre est + grand que 1 on fait un appel recursif de la fonction */
  • if (Nombre>1)
  • {
  • base2 (Nombre/2);
  • }
  • /* Si le Nombre est + petit que 1, on affiche le reste grace au modulo */
  • printf("%d",Nombre%2);
  • }
  • int main(int argc, char *argv[])
  • {
  • /* Declaration et initialisaton des variables */
  • int Nombre=0;
  • char* NombreRecupere=NULL;
  • /* On teste si le nombre d'arguments recupere sur la ligne de commande est bien 2: le programme et le nombre a traiter */
  • /* Si ce n'est pas le cas, l'utilisateur peut saisir le nombre qu'il souhaite traiter */
  • if (argc != 2)
  • {
  • printf("Veuillez entrer le nombre a convertir en base 2: ");
  • scanf("%d",&Nombre);
  • }
  • else
  • {
  • /* Sinon on recupere le nombre (qui est sous forme de chaine) sur la ligne de commande */
  • NombreRecupere = argv[1];
  • /* On convertit cette chaine en un entier */
  • Nombre = atoi(NombreRecupere);
  • }
  • /* On affiche le resultat en appelant la fonction Base2 qui traitera le nombre */
  • printf("%d en base 2 s'ecrit:\n", Nombre);
  • base2 (Nombre);
  • printf("\n");
  • return 0;
  • }
#include <stdio.h>
#include <stdlib.h>

/* Fonction qui transforme le  Nombre en base 2 et l'affiche */
void base2 (int Nombre)
{
  /* Si le Nombre est + grand que 1 on fait un appel recursif de la fonction */
  if (Nombre>1)
    {
    base2 (Nombre/2);
    }
  /* Si le Nombre est + petit que 1, on affiche le reste grace au modulo */
  printf("%d",Nombre%2);
}


int main(int argc, char *argv[])
{
  /* Declaration et initialisaton des variables */
  int Nombre=0;
  char* NombreRecupere=NULL;

  /* On teste si le nombre d'arguments recupere sur la ligne de commande est bien 2: le programme et le nombre a traiter */
  /* Si ce n'est pas le cas, l'utilisateur peut saisir le nombre qu'il souhaite traiter */
  if (argc != 2)
    {
      printf("Veuillez entrer le nombre a convertir en base 2: ");
      scanf("%d",&Nombre);
    }
  else
    {
      /* Sinon on recupere le nombre (qui est sous forme de chaine) sur la ligne de commande */
      NombreRecupere = argv[1];

      /* On convertit cette chaine en un entier */
      Nombre = atoi(NombreRecupere);
    }

  /* On affiche le resultat en appelant la fonction Base2 qui traitera le nombre */
  printf("%d en base 2 s'ecrit:\n", Nombre);
  base2 (Nombre);
  printf("\n");

  return 0;
}



 Historique

02 décembre 2004 19:44:37 :
A jout de commentaires, j'espère que c'est un peu plus clair ;-)
02 décembre 2004 19:44:52 :
Ajout de commentaires, j'espère que c'est un peu plus clair ;-)
02 décembre 2004 21:02:33 :
Changement de langage de la source, je m'éto trompé... dsl
03 décembre 2004 20:43:31 :
Suite à vos conseils (merci) ;-), maintenant l'utilisateur peut saisir le nombre qu'il souhaite convertir dans le cas où il s'est trompé sur la ligne de commande.

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel
TECHNIQUE SIMPLE DE CONVERSION BINAIRE DÉCIMAL par DarthKhaos
Source avec Zip Source avec une capture CONVERTISSEUR BINAIRE, HÉXA, DÉCIMAL UTILISANT LES API WINDO... par julien_boss
Source avec Zip CONVERSION DEC / HEX / BIN (WIN 32) par aardman

Commentaires et avis

Commentaire de asmanur le 03/12/2004 07:43:24

Pour récupérer le nombre à convertir t'utilises argv?
C'est pas plutot les fichiers qui sont associés à l'éxécutable??

Commentaire de kanagan le 03/12/2004 11:43:25

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

Commentaire de asmanur le 03/12/2004 12:45:18

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)

Commentaire de asmanur le 03/12/2004 12:47:03

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+

Commentaire de vecchio56 le 03/12/2004 17:49:55 administrateur CS

Mais si ca marche, essaie depuis une commande dos et tu verras

Commentaire de minet03 le 03/12/2004 17:54:37

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

Commentaire de coucou747 le 03/12/2004 20:19:44 administrateur CS

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

Commentaire de Saros le 03/12/2004 21:09:52

J'ai bien aimé la méthode... que j'ai trouvé originale...
On peut faire comme ça avec n'importe quelle base ?

Commentaire de Kirua le 03/12/2004 22:01:28

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)

Commentaire de kanagan le 03/12/2004 22:04:52

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 ?

Commentaire de Kirua le 03/12/2004 22:10:44

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.

Commentaire de kanagan le 03/12/2004 22:16:51

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.

Commentaire de kanagan le 03/12/2004 22:26:55

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 ;-)

Commentaire de Kirua le 03/12/2004 22:31: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.

Commentaire de coucou747 le 03/12/2004 22:45:51 administrateur CS

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

Commentaire de minet03 le 04/12/2004 11:05:46

voilà moi, comment j'ai procédé : http://www.cppfrance.com/code.aspx?ID=26901

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Convertion Binaire => Decimal => Hexa... [ par WebKiller17 ] Hello a tous,J suis un amateur en prog... et j aurai besoin de votre coup de main... est ce que vous pourriez me dire ce qui joue pas dans ce code et Affichage décimal [ par couriousous ] Hello!Comment afficher une variable long double avec toutes ses décimales SANS la convertire au format double (perte de précision)???Merci! conversion binaire-décimal en C [ par Tooshort23 ] Bonjour,je suis étudiant en IUT GEII.Savais vous convertir un nombre binaire (de taille: 32 bits) en décimal ?merci de me donner des conseils.Si possi arbre binaire [ par Alesx ] Salut &#224; tous !!Voil&#224;, en ce moment je bosse sur les arbres BSP et j'aurais voulu savoir si qqun parmis vous avez dans sa hotte (je&nbsp;sais convertir un float en binaire [ par tiess81 ] Bonjour je suis en train de concevoir un interpreteur avec flex et bison qui doit me permettre de faire des calculs arithm&#233;tique dans toutes les ecritute en base 2 [ par fredleconte ] Hello,je veux ecrire un chiffre binaire ( Par ex. 1010101 en base binaire dans le texte) en C sans convertir en decimal ou en hexadecimal( Je cherche Bis: Binaire en C [ par fredleconte ] Réponse acceptée ! Mon problème n'est pas de convertir un nombre d'un base a l'autre mais de l'écrire comme en basic "%1010101" ou "%" désigne un nomb fonctions de base d'un arbre binaire [ par abdelkaderg54 ] Salut tout le monde ..Ben alors j'ai un probleme avec les arbre binaires ,je suis a la recherche des fonctions des base suivantes en c++:1/declaration programation [ par oussamacss ] j'aime bien avoir un programe pour la conversion des base exp: base binaire aux base desimale       base binaire aux base hexa decimale       et...... conversion decimal - binaire [ par diabablo ] slt les amisj'aime la programmation mais pour debuter j'ai un peu de soucis tel que la conversion d'un nombre decimal en binaire. en faite ce n'est pa


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales