[C ++] Conversion Decimal-Binaire aidez moi s.v.p

Résolu
Belfegorvegeta Messages postés 3 Date d'inscription samedi 26 juillet 2008 Statut Membre Dernière intervention 17 décembre 2008 - 17 déc. 2008 à 15:19
Belfegorvegeta Messages postés 3 Date d'inscription samedi 26 juillet 2008 Statut Membre Dernière intervention 17 décembre 2008 - 17 déc. 2008 à 22:01
Bonjour, je voudrais pouvoir convertir un nombre entier entré par l'utilisateur en binaire, mais je dois afficher ce résultat chaine de caractère, le problème que je rencontre, c'est comment affecter une variable à une chaine de caractère ?

Code:

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

int main(int argc, char *argv[])
{
int entier, quotient, resultant;
char reste[3], binaire[20];

printf("Saisissez un entier");
scanf("%d", &entier);
do
{
resultant = quotient % 2;
quotient = quotient / 2;
strcpy(binaire, "");
strcpy(reste, resultant); /* Comment mettre une variable dans une chaîne de caractères ? */
strcat binaire, reste;

}
while(reste != 0);
ltoa(binaire, binaire, 10);
printf("Correspondance binaire = %s", binaire);

system("PAUSE");
return 0;
}



Merci!

4 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
17 déc. 2008 à 17:23
avant meme de lire ton code, le programme se fige = > boucle infinie. Bon voyons ton erreur.

reste est une chaine de caracètre, que tu compares à un entier (dans le while), c'est ca ton pb.

Dans ton programme, tu sortirais quand reste == 0; Ca ne va pas, tu va sortir à la 1ere ou 2e itération. Il faut que tu sorte quand quotien sera égal à 0. Comme dans mon code d'exemple.
3
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
17 déc. 2008 à 15:44
salut


on dirait un exercice qui date d'un an . Cette questiona été posée par quelqu'un de la promo de l'an dernier.


Mais si on garde ta méthode : c'est plutot ce genre de chose


// on vide la chaine

memset(binaire, 0, 20);

do

{

resultant = quotient % 2;

quotient = quotient / 2;

sprintf(binaire, "%s%d", binaire, resultant); /* Comment mettre une variable dans une chaîne de caractères ? */


}

while(quotient != 0);


// sinon vu que travaille en binaire tu peux jouer avec les décalage

l'opération >> 1 revient à décalé d'un bit vers la droite, donc diviser par 2


do

{


resultant = quotient & 1;

quotient = quotient >> 1;

sprintf(binaire, "%s%d", binaire, resultant); /* Comment mettre une variable dans une chaîne de caractères ? */


}

while(quotient != 0);


dans ces 2 exemples, tu as ta chaine a l'envers. essaie _strrev (si tu es sous windows)
0
Belfegorvegeta Messages postés 3 Date d'inscription samedi 26 juillet 2008 Statut Membre Dernière intervention 17 décembre 2008
17 déc. 2008 à 16:45
J'ai modifier le code, seulement à l'exécution le programme se fige après avoir entrer la valeur, je ne trouve pas d'où cela vient.

nouveau code:


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

int main()
{
int entier, quotient, resultant;
char reste[3], binaire[20];

printf("Saisissez un entier\n");
scanf("%d", &entier); /* L'utilisateur entre le nombre à convertir */
do
{
resultant = quotient % 2; /* Obtention du reste */
quotient = quotient / 2; /* Obtention du numérateur suivant */
strcpy(binaire, ""); /* Déclaration chaîne vide afin de ne pas avoir de problèmes pour la concaténation */
ltoa(resultant, reste, 10); /* Conversion du reste en chaine */
strcat(binaire, reste); /* Concaténation d'une partie de la chaîne bianaire avec le nouveau reste */

}
while (reste != 0);
strrev(binaire);
printf("Correspondance binaire = %s", binaire);

system("PAUSE");
return 0;
}
0
Belfegorvegeta Messages postés 3 Date d'inscription samedi 26 juillet 2008 Statut Membre Dernière intervention 17 décembre 2008
17 déc. 2008 à 22:01
Merci fregolo52, j'ai réglé mon problème et le code est fonctionnel:


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

int main()
{
int quotient, resultant;
char reste[5], binaire[20];

printf("Saisissez un entier\n");
scanf("%d", "ient); /* L'utilisateur entre le nombre à convertir */
strcpy(binaire, ""); /* Déclaration chaîne vide afin de ne pas avoir de problèmes pour la concaténation */
do
{
resultant = quotient % 2; /* Obtention du reste */
quotient = quotient / 2; /* Obtention du numérateur suivant */
ltoa(resultant, reste, 10); /* Conversion du reste en chaine */
strcat(binaire, reste); /* Concaténation d'une partie de la chaîne bianaire avec le nouveau reste */

}
while(quotient != 0);
strrev(binaire);
printf("Correspondance binaire = %s\n", binaire);

system("PAUSE");
return 0;
}
0
Rejoignez-nous