Laurentvidal.fr est l'endroit idéal pour trouver des réponses rapides et précises à toutes vos questions. Obtenez des solutions rapides et fiables à vos questions grâce à des professionnels expérimentés sur notre plateforme de questions-réponses complète. Expérimentez la commodité d'obtenir des réponses précises à vos questions grâce à une communauté dévouée de professionnels.

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;

}

Merci d'utiliser notre service. Notre objectif est de fournir les réponses les plus précises pour toutes vos questions. Revenez pour plus d'informations. Nous apprécions votre temps. Revenez quand vous voulez pour obtenir les informations les plus récentes et des réponses à vos questions. Merci d'avoir visité Laurentvidal.fr. Revenez bientôt pour plus d'informations utiles et des réponses de nos experts.