Перевод беззнаковых чисел из двоичной с-мы в десятичную - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Написал такое чудо для перевода из двоичной в десятичную. Переводит првильно только при вводе только едениц (111 - 7 и т.д). Не могу понять как исправить.
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8. char bin[64];
  9. char buff[2];
  10. int i;
  11. int n;
  12. int s = 0;
  13. int str_len;
  14. long unsigned int res = 0;
  15.  
  16. scanf("%s", bin);
  17. str_len = strlen(bin);
  18. for(i = 0; bin[i] != '\0'; i++)
  19. {
  20. buff[0] = bin[i];
  21. buff[1] = '\0';
  22. n = atoi(buff);
  23. if(n == 0)
  24. {
  25. s+=1;
  26. }
  27. else if(n == 1)
  28. {
  29. res += n * pow(2,i+s);
  30. s = 0;
  31. }
  32. }
  33. printf("%lu", res);
  34. return 0;
  35. }

Решение задачи: «Перевод беззнаковых чисел из двоичной с-мы в десятичную»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.  
  10.     char bin[64];
  11.  
  12.     int i;
  13.  
  14.  
  15.     long unsigned int res = 0;
  16.  
  17.  
  18.  
  19.     memset(bin,0,sizeof(bin));
  20.  
  21.     if(scanf("%s", bin) == 1)
  22.     {
  23.         for(i = 0; i < strlen(bin); i++)
  24.         {
  25.             res += (bin[i]=='1') ? 1 << (strlen(bin) - i -1):0;
  26.  
  27.         }
  28.  
  29.         printf("%lu", res);
  30.     }
  31.     return 0;
  32. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы