Перевод беззнаковых чисел из двоичной с-мы в десятичную - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д