Pour convertir un nombre en binaire !!!

Fermé
mimizaa Messages postés 26 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 31 juillet 2014 - 11 avril 2013 à 18:10
mimizaa Messages postés 26 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 31 juillet 2014 - 1 mai 2013 à 19:36
saluuuut! j'ai ecris un programme qui permet de convertir un nombre en binaire mais je suis complètement coincé je sais plus quoi faire aprés cela


#include <stdio.h>
#include <stdlib.h>

main ()
{
int nbr,nbrbin,i,n;
;
printf("entrez le nombre a convertir : ");
scanf("%d",&nbr);

nbrbin=nbr/2 ;
nbr/2=(nbr/2)/2;
(nbr/2)/2=((nbr/2)/2)/2;
((nbr/2)/2)/2=(((nbr/2)/2)/2)/2;
(((nbr/2)/2)/2)/2=((((nbr/2)/2)/2)/2)/2;
((((nbr/2)/2)/2)/2)/2=(((((nbr/2)/2)/2)/2)/2)/2;
(((((nbr/2)/2)/2)/2)/2)/2=((((((nbr/2)/2)/2)/2)/2)/2)/2;
((((((nbr/2)/2)/2)/2)/2)/2)/2=(((((((nbr/2)/2)/2)/2)/2)/2)/2)/2;
(((((((nbr/2)/2)/2)/2)/2)/2)/2)/2=((((((((nbr/2)/2)/2)/2)/2)/2)/2)/2)/2;

printf("resulta est : %d" ,nbrbin,nbr);



getch ();

}


aidez moi svp qu'est ce qu je dois faire ??
merci d'avance !

7 réponses

Utilisateur anonyme
12 avril 2013 à 09:47
salut

tu peux commencer à regarder :
fonction récursives
modulo

ca devrai pas mal t'aider.

naga
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
11 avril 2013 à 19:31
Ouah...
Faut continuer lol.
Avant de coder, as-tu compris l'algorithme que tu souhaites implémenter ?
0
mimizaa Messages postés 26 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 31 juillet 2014
12 avril 2013 à 00:06
ouii il faut faire un algo qui permet de convertir un nombre vers le binaire en langage c je suis débutante je connais pas tellement de fonctions pour bien améliorer mon programme c'est pour ça je demande l'aide !
0
Utilisateur anonyme
12 avril 2013 à 10:13
Bonjour

Avant même de te poser des questions sur l'algorithme et la récursion, commence par te demander ce que veut dire ta ligne :
nbr/2=(nbr/2)/2; 

car c'est une horreur absolue qui montre que tu n'as pas compris l'affectation ( le = ) en informatique.
Tu calcules ce qu'il y a à droite du = et tu le mets dans la variable qu'il y a à gauche du = (Je sais, ça peut être autre chose qu'une simple variable mais ne brouillons pas les pistes).
Mettre nbr/2 à gauche ne veut tout simplement rien dire, car nbr/2 n'est pas une variable. Il faut que tu commences par en être bien persuadé avant de réfléchir au reste.
0
mimizaa Messages postés 26 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 31 juillet 2014
12 avril 2013 à 17:04
ouiii :s je dirai que je suis débutante, vu le niveau de réflexion pourras tu me conseiller commeent je peux l'evoluer ? :)
0
Utilisateur anonyme
12 avril 2013 à 17:16
Je n'ai aucun titre ni lien à te donner, mais il te faut un cours pour grands débutants.
Tu n'as pas décidé de te mettre à écrire du C comme ça, tu as bien du avoir un support (cours scolaire ou tutoriel sur internet).
Relis le début sans sauter par-dessus ce que tu ne comprends pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
12 avril 2013 à 11:47
https://stackoverflow.com/questions/111928/is-there-a-printf-converter-to-print-in-binary-format
Je trouve compliquer de raisonner sur des entier à afficher en décimal. Le décalage de bit pourrait t'aider aussi (>>)
0
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 089
12 avril 2013 à 13:31
Oui, le décalage de bits est une solution astucieuse, avec test du bit "perdu" avant décalage. J'utiliserai <<, pour afficher les bits dans l'ordre :-)


Dal
0
mimizaa Messages postés 26 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 31 juillet 2014
12 avril 2013 à 17:05
et comment je peux effectuer ça ?
0
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 089
12 avril 2013 à 18:37
Pour un entier de 0 à 255 contenu dans octet, avec un type unsigned char, et une variable pour contenir la retenue, tu peux utiliser l'opérateur bit à bit "ET" (&) pour déterminer si le bit le plus à gauche est un 1 ou un 0 :

    if ((octet & 0b10000000) == 0b10000000) /* 8ème bit à 1 ? */
        retenue = 1;
    else
        retenue = 0;


Tu décales octet vers la gauche (<<) pour passer au bit suivant à afficher, et répètes jusqu'à épuisement de ton octet.


Dal
0
malcomx2 Messages postés 7 Date d'inscription lundi 15 avril 2013 Statut Membre Dernière intervention 16 avril 2013
16 avril 2013 à 16:15
#include<stdio.h>
#include<conio.h>
main ()
{
int c=1,d,a=0;
printf("donnez la valeur en dicimal\n");
scanf("%d",&d);
if(d<2){
printf("le binaire de la valeur est %d",d);}
d=d*2;
if(d>2){
do
{
d=(d/2);
a=a+(d%2);
a=a*10;
if(a==0){
c=c*10;}
}while(d/2 != 0);
printf("le binaire de la valeur est %d",(a/10)*c);}
getch();
}
0
mimizaa Messages postés 26 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 31 juillet 2014
23 avril 2013 à 13:54
merci malcomx2 ton programme a fonctionner avec succès , vous pouvez ajouter des commentaires à chaque ligne pour bien comprendre ton programme car ya des choses que j'y arrive pas merciiiiiiiiiiiiii (y)
-1
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
23 avril 2013 à 14:09
tu veux aussi qu'on te tape le rapport de l'exercice ?
0
mimizaa Messages postés 26 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 31 juillet 2014
1 mai 2013 à 19:36
?????
0