Перевод беззнаковых чисел из двоичной с-мы в десятичную - 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;
}

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы