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?