Перевод беззнаковых чисел из двоичной с-мы в десятичную - C (СИ)
Формулировка задачи:
Доброго времени суток. Написал такое чудо для перевода из двоичной в десятичную. Переводит првильно только
при вводе только едениц (111 - 7 и т.д). Не могу понять как исправить.
Листинг программы
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #include <string.h>
- int main(int argc, char *argv[])
- {
- char bin[64];
- char buff[2];
- int i;
- int n;
- int s = 0;
- int str_len;
- long unsigned int res = 0;
- scanf("%s", bin);
- str_len = strlen(bin);
- for(i = 0; bin[i] != '\0'; i++)
- {
- buff[0] = bin[i];
- buff[1] = '\0';
- n = atoi(buff);
- if(n == 0)
- {
- s+=1;
- }
- else if(n == 1)
- {
- res += n * pow(2,i+s);
- s = 0;
- }
- }
- printf("%lu", res);
- return 0;
- }
Решение задачи: «Перевод беззнаковых чисел из двоичной с-мы в десятичную»
textual
Листинг программы
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #include <string.h>
- int main(int argc, char *argv[])
- {
- char bin[64];
- int i;
- long unsigned int res = 0;
- memset(bin,0,sizeof(bin));
- if(scanf("%s", bin) == 1)
- {
- for(i = 0; i < strlen(bin); i++)
- {
- res += (bin[i]=='1') ? 1 << (strlen(bin) - i -1):0;
- }
- printf("%lu", res);
- }
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д