Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Escreva uma função que dado uma string contendo uma sequência de 0 e 1 representando um número binário, retorne o número em base decimal. Para converter um número binário (na base 2, com algarismos 0 ou 1) em um número na base decimal (com algarismos de 0 a 9), se multiplica cada dígito binário por sua potência e depois soma-se. Cada potência é calculada como 2n, onde 2 é a base e n é o expoente. O expoente é indicado pela posição do dígito, sendo o mais a direita posição 0, o seguinte posição 1, etc.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int binario(char*, int);
int main ()
{
char bin[10];
printf("Digite um numero binario");
gets(bin);
printf("Numero convertido em decimal = %d", binario(bin, strlen(bin)));
return 0;
}
int binario(char bin[], int ts)
{
int dec=0, i, aux[ts];
for(i=0; i<ts; i++)
{
aux[ts] = atoi(bin[i]);
dec = dec + (aux*pow(2, ts-1-i));
}
return dec;
}
Entretanto o programa trava durante a execução, acredito que seja por conta do comando atoi, que pesquisando aqui encontrei que precisa receber um char* - string- e não apenas um caractere char. Há alguma maneira alternativa de realizar a conversão de char em int?
Carregando comentários...