Problème convertisseur Decimal/binaire
Résolu
Thonyglandil
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Thonyglandil Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Thonyglandil Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai besoin d'aide, ca fait 3 jours que je suis deçu et à chaque fois ca ne marche pas! Et étant novice ca n'aide pas! Je dois réaliser un convertisseur décimale/binaire en 32bits.
Voilà où j'en suis :
Ce programme fonctionne mais 8bits ce n'est pas suffisant! Dois-je mettre 32 dans mon tableau?
J'ai tenter une seconde fois avec une autre approche :
Mais cette fois ci, le programme plante une fois que l'on entre la valeur a convertir!
Merci d'avance pour votre aide!
J'ai besoin d'aide, ca fait 3 jours que je suis deçu et à chaque fois ca ne marche pas! Et étant novice ca n'aide pas! Je dois réaliser un convertisseur décimale/binaire en 32bits.
Voilà où j'en suis :
#include <stdio.h> #include <stdlib.h> #include <math.h> int main () { int nb, binaire, i; int tab[8]; printf("Entrez un nombre entier compris entre 0 et 4 294 967 295 : "); scanf("%d", &nb); for(i = 0; i < 8; i++){ binaire = nb % 2; tab[i] = binaire; printf("%d ", tab[i]); nb = nb / 2; } printf(" | "); for(i = 0; i < 8; i++){ printf("%d ", tab[7 - i]); } return 0; }
Ce programme fonctionne mais 8bits ce n'est pas suffisant! Dois-je mettre 32 dans mon tableau?
J'ai tenter une seconde fois avec une autre approche :
#include <stdio.h> #include <stdlib.h> #include <math.h> int main () { int nb, binaire, i, x = 0, y = 0; int tab[32]; printf("Entrez un nombre entier compris entre 0 et 4 294 967 295 : "); scanf("%d", &nb); do{ binaire = nb % 2; tab[i] = binaire; printf("%d ", tab[i]); nb = nb / 2; x = y++; } while(nb >= 0); printf(" | "); for(i = 0; i < x; i++){ printf("%d ", tab[x - i]); } return 0; }
Mais cette fois ci, le programme plante une fois que l'on entre la valeur a convertir!
Merci d'avance pour votre aide!
A voir également:
- Problème convertisseur Decimal/binaire
- Binaire - Guide
- Convertisseur mp3 - Télécharger - Conversion & Extraction
- Convertisseur YouTube MP3 : toutes les solutions gratuites - Guide
- Code ascii convertisseur - Guide
- Convertisseur récupération de texte - Guide
5 réponses
Salut Thony,
Tout d'abord, sache que si cette fonction est faite juste pour afficher l'ecriture binaire d'un nombre en base 10, elle n'est pas necessaire puisque l'on peut utiliser les flags de printf pour ça (et oui, vive le C et stdio ^^)
Ensuite tu devrai essayer avec la meme boucle for, on vera plus claire dans ton code.
il y a aussi des petits probleme commpar exemple la variable i que n'a pas de valeur.
Et une derniere chose, je n'est pas compris l'utilité de la 2eme boucle
Tout d'abord, sache que si cette fonction est faite juste pour afficher l'ecriture binaire d'un nombre en base 10, elle n'est pas necessaire puisque l'on peut utiliser les flags de printf pour ça (et oui, vive le C et stdio ^^)
Ensuite tu devrai essayer avec la meme boucle for, on vera plus claire dans ton code.
il y a aussi des petits probleme commpar exemple la variable i que n'a pas de valeur.
Et une derniere chose, je n'est pas compris l'utilité de la 2eme boucle
Bonjour,
Oui, il s'agit d'afficher la conversion d'un décimal en base 10 vers un binaire en base 2.
Je suis débutant en programmation, (la programmation est inclu dans le cursus de mes études qui la géologie. Il n'y a pas vraiment de rapport entre les 2 matières mais ce n'est pas moi qui est choisi de mettre de la programmation dans le cursus!)
En ce qui concerne les flags je n'ai jamais entendu parler de ça. S'il peuvent faciliter la chose, je veux bien utiliser cela! ^^
Le 2e boucle est la pour l'affichage du nombre binaire dans le bon sens, car après le calcul, le resultat est inverser!
Et pour la boucle for je ne vois pas comment je pourrai l'utiliser!
Merci pour le i, je n'avais pas vu! Pour le second code après 2 petite rectification, j'obtiens le bon resultat mais a l'enver!
D'où la deuxieme boucle pour le remettre a l'endroit! Mais celle ne fonctionne pas!
Oui, il s'agit d'afficher la conversion d'un décimal en base 10 vers un binaire en base 2.
Je suis débutant en programmation, (la programmation est inclu dans le cursus de mes études qui la géologie. Il n'y a pas vraiment de rapport entre les 2 matières mais ce n'est pas moi qui est choisi de mettre de la programmation dans le cursus!)
En ce qui concerne les flags je n'ai jamais entendu parler de ça. S'il peuvent faciliter la chose, je veux bien utiliser cela! ^^
Le 2e boucle est la pour l'affichage du nombre binaire dans le bon sens, car après le calcul, le resultat est inverser!
Et pour la boucle for je ne vois pas comment je pourrai l'utiliser!
Merci pour le i, je n'avais pas vu! Pour le second code après 2 petite rectification, j'obtiens le bon resultat mais a l'enver!
D'où la deuxieme boucle pour le remettre a l'endroit! Mais celle ne fonctionne pas!
Bon pour la premiere solution, il n'existe pas de flag pour le binaire avec la fonction printf() (Pour ta culture general, il suffit de remplacer %d par %x pour ecrire un nombre en hexadecimal)
apres ta 1ere boucle, tu a un tableau avec tout tes chiffres, alors retire le printf de la 1ere boucle et ajoute ceci a la place de la 2eme:
int cpt=0
while(cpt<32){
printf("%i", tab[cpt]);
cpt++;
}
ou pour ecrire dans l'autre sens
int cpt=32
while(cpt>0){
printf("%i", tab[cpt]);
cpt--;
}
Voila, j'espere que sa marchera et que le binaire te servira en géologie =P
apres ta 1ere boucle, tu a un tableau avec tout tes chiffres, alors retire le printf de la 1ere boucle et ajoute ceci a la place de la 2eme:
int cpt=0
while(cpt<32){
printf("%i", tab[cpt]);
cpt++;
}
ou pour ecrire dans l'autre sens
int cpt=32
while(cpt>0){
printf("%i", tab[cpt]);
cpt--;
}
Voila, j'espere que sa marchera et que le binaire te servira en géologie =P
En fait il te restai des erreur: le tableau non reset, une boucle infini (nb/2 ne peu pas etre <0 !)
donc g refait tou le code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void reset(int tab[]);
int main ()
{
int nb, cpt=0;
int tab[32];
printf("Entrez un nombre entier compris entre 0 et 4 294 967 295 : ");
scanf("%d", &nb);
reset(tab);
do{
tab[cpt]=nb%2;
nb/=2;
cpt++;
}while(nb>1);
tab[cpt]=nb%2;
cpt=31;
while (cpt>=0){
printf("%d", tab[cpt]);
cpt--;
}
return 0;
}
void reset(int tab[])
{
int cpt=0;
while (cpt<32){
tab[cpt]=0;
cpt++;
}
}
voila, c verifier et sa marche ;D
donc g refait tou le code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void reset(int tab[]);
int main ()
{
int nb, cpt=0;
int tab[32];
printf("Entrez un nombre entier compris entre 0 et 4 294 967 295 : ");
scanf("%d", &nb);
reset(tab);
do{
tab[cpt]=nb%2;
nb/=2;
cpt++;
}while(nb>1);
tab[cpt]=nb%2;
cpt=31;
while (cpt>=0){
printf("%d", tab[cpt]);
cpt--;
}
return 0;
}
void reset(int tab[])
{
int cpt=0;
while (cpt<32){
tab[cpt]=0;
cpt++;
}
}
voila, c verifier et sa marche ;D
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question