Перевод из двоичной в десятичную систему счисления - 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);
Объяснение кода листинга программы
- Объявлены две переменные:
ch
типаchar
иn
типаlong long
. - Затем в цикле
do-while
происходит следующее: - Внутри цикла переменная
n
инициализируется значением 0. - Выводится приглашение для ввода двоичного числа.
- В цикле
while
происходит считывание символа из стандартного ввода до тех пор, пока не будет введен ноль или единица. - Считанный символ сдвигается влево на 1 бит и добавляется к
n
, если он равен 1. - После окончания ввода числа выводится его десятичное представление.
- Если введенный символ равен 10 (перевод строки), цикл продолжается, в противном случае он завершается.
- Цикл выполняется повторно с начала.
- Если введенный символ не равен 10, цикл продолжается, в противном случае он завершается.
- Выводится десятичное представление числа
n
. - Цикл выполняется повторно с начала.
- Если введенный символ не равен 10, цикл продолжается, в противном случае он завершается.
- Выводится десятичное представление числа
n
. - Цикл выполняется повторно с начала.
- Если введенный символ не равен 10, цикл продолжается, в противном случае он завершается.
- Выводится десятичное представление числа
n
. - Цикл выполняется повторно с начала.
- Если введенный символ не равен 10, цикл продолжается, в противном случае он завершается.
- Выводится десятичное представление числа
n
. - Цикл выполняется повторно с начала.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д