Pulse 0 Denunciar post Postado Agosto 29, 2015 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? Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Setembro 4, 2015 strtol http://www.cplusplus.com/reference/cstdlib/strtol/ Compartilhar este post Link para o post Compartilhar em outros sites