Soyez le premier à donner votre avis sur cette source.
Snippet vu 8 497 fois - Téléchargée 20 fois
#include <stdio.h> #include <conio.h> #include <stdlib.h> int main(void) { short int tab [2][8] ={128,64,32,16,8,4,2,1,0,0,0,0,0,0,0,0}; int i,j,k,x=0; printf("veuillez saisir le mot binaire:\n"); for(i=0;i<8;i++) //boucle saisie { scanf("%d",&tab[1][i]); } for(j=0;j<8;j++) //boucle verification affichage { printf("case:%d = %d\n",j,tab[1][j]); } for(k=0;k<8;k++) { if(tab [1][k]==1) { x=x+tab[0][k]; } } printf("le mot binaire =%d\n",x); }
20 avril 2010 à 20:55
d'abord t'es limité à 8 bits, et en plus l'utilisateur doit rentrer la totalité des 8 bits, même ceux qui servent à rien.
par exemple, je veux convertir 1101, je suis obligé d'écrire les quatre 0 inutiles avant. le pire, c'est que la saisie se fait ligne par ligne, bit par bit... c'est pas follement excitant.
16 avril 2010 à 23:54
---
#include <stdio.h>
#include <math.h>
int binaire(const char* str)
{int s_len strlen(str), res 0, val = 1;
char *s;
for (s=(char*)str+s_len-1;s>=str;s--)
{
if (*s=='1') res += val;
val<<=1;
}
return res;
}
int main(int argc, char* argv[])
{
char buf[11];
printf("Entrez un nombre en binaire : "); scanf("%10s",buf);
printf("Valeur en base 10 : %d\n",binaire(buf));
return 0;
}
16 avril 2010 à 18:00
Voici deux corrections.
La première est une écriture correcte de ton code:
#include <stdio.h>
int main(void)
{
short int tab[2][8] =
{
{128, 64, 32, 16, 8, 4, 2, 1},
{0, 0, 0, 0, 0, 0, 0, 0}
};
int i, j, k, x = 0;
printf("Veuillez saisir le mot binaire:\n");
for (i = 0;i < 8; ++i)
scanf("%hd", &tab[1][i]);
for (j = 0; j < 8; ++j)
printf("Case: %d = %hd\n", j, tab[1][j]);
for (k = 0; k < 8; ++k)
if (tab[1][k] == 1)
x += tab[0][k];
printf("Le mot binaire =%d\n", x);
return 0;
}
La deuxième est une écriture un peu mieux (Plus flexible, il est facile de changer la taille du mot binaire, on pourrait même se passer du tableau d'ailleurs):
#include <stdio.h>
#define MAX 8
int main(void)
{
short int tab[MAX] = {0};
int i, x = 0;
printf("Veuillez saisir le mot binaire:\n");
for (i = 0; i < MAX; ++i)
scanf("%hd", &tab[i]);
for (i = 0; i < 8; ++i)
printf("Case: %d = %hd\n", i, tab[i]);
for (i = 0; i < MAX; ++i)
if (tab[i] == 1) x +tab[i] * (i 0 ? 1 : 2 << (i - 1));
printf("Le mot binaire = %d\n", x);
return 0;
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.