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

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

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

Нужно перевести число любой длины из двоичной в десятичную и чтобы после завершения перевода можно было опять вводить числа, а если число не из двоичной, то сразу останавливать программу. Из операторов вводa можно пользоваться только getchar.
#include <stdio.h>
 
int main(void)
{
    int c, a;
    int power=1;
    int number=0;
    c=getchar();
    while (c != EOF)
    {
        a=((int)c);
        a=a%10;
        if((a==0)||(a==1))
        {
            number=number+a*power;
            c=c/10;
            power=power*2;
        }
        else
        {
            printf("That number isn't binary\n");
        }
        c=getchar();
        printf("%d",number);
    }
    
}
Не понимаю почему программа не хочет отрезать последнее число. Перелистал форум, но так ничего похожего не нашел.

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

textual
Листинг программы
    char ch;
    long long n;
    do
    {
        n=0;
        printf("bin:");
        while((ch=getchar())=='0' || ch=='1')
        {
            n<<=1;
            if(ch=='1') n++;
        }
        printf("dec:%lld\n",n);
    }while(ch==10);

Объяснение кода листинга программы

  1. Объявлены две переменные: ch типа char и n типа long long.
  2. Затем в цикле do-while происходит следующее:
  3. Внутри цикла переменная n инициализируется значением 0.
  4. Выводится приглашение для ввода двоичного числа.
  5. В цикле while происходит считывание символа из стандартного ввода до тех пор, пока не будет введен ноль или единица.
  6. Считанный символ сдвигается влево на 1 бит и добавляется к n, если он равен 1.
  7. После окончания ввода числа выводится его десятичное представление.
  8. Если введенный символ равен 10 (перевод строки), цикл продолжается, в противном случае он завершается.
  9. Цикл выполняется повторно с начала.
  10. Если введенный символ не равен 10, цикл продолжается, в противном случае он завершается.
  11. Выводится десятичное представление числа n.
  12. Цикл выполняется повторно с начала.
  13. Если введенный символ не равен 10, цикл продолжается, в противном случае он завершается.
  14. Выводится десятичное представление числа n.
  15. Цикл выполняется повторно с начала.
  16. Если введенный символ не равен 10, цикл продолжается, в противном случае он завершается.
  17. Выводится десятичное представление числа n.
  18. Цикл выполняется повторно с начала.
  19. Если введенный символ не равен 10, цикл продолжается, в противном случае он завершается.
  20. Выводится десятичное представление числа n.
  21. Цикл выполняется повторно с начала.

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


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

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

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