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

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

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

Нужно перевести число любой длины из двоичной в десятичную и чтобы после завершения перевода можно было опять вводить числа, а если число не из двоичной, то сразу останавливать программу. Из операторов вводa можно пользоваться только getchar.
Листинг программы
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. int c, a;
  5. int power=1;
  6. int number=0;
  7. c=getchar();
  8. while (c != EOF)
  9. {
  10. a=((int)c);
  11. a=a%10;
  12. if((a==0)||(a==1))
  13. {
  14. number=number+a*power;
  15. c=c/10;
  16. power=power*2;
  17. }
  18. else
  19. {
  20. printf("That number isn't binary\n");
  21. }
  22. c=getchar();
  23. printf("%d",number);
  24. }
  25. }
Не понимаю почему программа не хочет отрезать последнее число. Перелистал форум, но так ничего похожего не нашел.

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

textual
Листинг программы
  1.     char ch;
  2.     long long n;
  3.     do
  4.     {
  5.         n=0;
  6.         printf("bin:");
  7.         while((ch=getchar())=='0' || ch=='1')
  8.         {
  9.             n<<=1;
  10.             if(ch=='1') n++;
  11.         }
  12.         printf("dec:%lld\n",n);
  13.     }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

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

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

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