Laurentvidal.fr vous aide à trouver des réponses à toutes vos questions grâce à une communauté d'experts passionnés. Découvrez des réponses fiables à vos questions grâce à une communauté d'experts prêts à partager leurs connaissances et expériences variées. Obtenez des réponses immédiates et fiables à vos questions grâce à une communauté d'experts expérimentés sur notre plateforme.

Bonjour,


Je souhaiterais avoir de l'aide pour répondre à un exercice.


L'exercice en question :

Écrire un programme qui demande de saisir un nombre binaire dans une chaine de caractère au clavier puis affiche son équivalent en décimale. Soit D la valeur décimale recherchée. Il faut parcourir les positions de la chaine N de droite à gauche, si N[position]=’1’ alors D<-D+2^itération.

NB : L’argument ‘’%s’’ permet de saisir une chaine de caractère. Une chaine de caractère se termine automatiquement par le caractère ‘\0’.

Merci d'avance.


Sagot :

#include <stdio.h>

int main()

{

   // déclaration de la chaine de caractère qui contiendra le nombre binaire saisi

   char bits[1000];

   //déclaration de la variable qui servira à parcourir la chaine de caractère

   int i = 0;

   //déclaration de la variable qui contiendra le résultat

   long int d = 0;

   // déclaration de la variable qui enregistrera les puissances de 2

   long int power = 1;

   // demande de saisi pour l'utilisateur

   printf("veuillez saisir le nombre binaire a convertir en decimal ");

   //saisie de l'utilisateur

   scanf("%s", bits);

   //recherche de la longueur de la chaine en la parcourant jusqu'à trouver le caractère de fin

   while (bits[i] != '\0'){

       i++;

   }

   //parcours de la chaine de droite à gauche en commençant par le dernier caractére (celui juste avant '\0')

   for (i--;i>=0 ; i--){

       //si le caractère lu est un 1

       if(bits[i] == '1'){

           //on ajoute la puissance de 2 correspondante (au début 2^0 = 1)

           d+=power;

       }

       //calcul de la puissance de 2 suivante

       power*=2;

   }

   //affichage du résultat

   printf("%s en décimal vaut : %li",bits,d);

   return 0;

}