Как ввести двоично-десятичный код числа в массив - C (СИ)
Формулировка задачи:
Добрый день.Возник следующий вопрос: мне нужно ввести с клавиатуры двоично-десятичный код числа, как введенное число занести в массив так,чтобы например,если пользователь ввел 01000001 ,то 0100- был нулевым элементом, 0001-был первым элементом массива?Спасибо
Массив должен быть символьным и ввод без пробелом
Решение задачи: «Как ввести двоично-десятичный код числа в массив»
textual
Листинг программы
- char p;
- char pp[2*20]="";
- int h=0,u=0; /*h буду использовать как счётчик бит в тетрадах, а u как индекс массива pp*/
- do
- {
- p=getchar();
- if(p='\n')
- break; /*условие выхода из цикла, фактически я переделал do while в цикл while*/
- if( (p<'0') || (p>'1') )
- continue; /*break прервёт цикл ввода, а continue
- перейдёт к проверке условия цикла, т.е. код ниже выполнятся не будет - игнорируем "левый" символ*/
- if(p=='1')
- pp[u] |= 1;
- pp[u] <<= 1; /*а '0' вводить?*/
- h++; /*бит в элемент массива ввели*/
- if(h>3)
- {
- h=0;/*отсчитали 4 бита, которые уже ввели и теперь счётчик обнулили для следующей тетрады*/
- u++; /*Перешли к следующему элементу массива*/
- }
- putchar(p); /*зачем это непонятно*/
- }while(1);
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные:
p
иpp
.p
является символом, который считывается из стандартного ввода.pp
- это массив символов, используемый для хранения двоичного представления вводимого числа.
- Инициализированы две переменные:
h
иu
.h
используется как счетчик битов в тетрадах (группах из четырех битов).u
используется как индекс массиваpp
.
- В цикле
do-while
считывается символ из стандартного ввода. Если этот символ является символом новой строки (\n
), то цикл прерывается. - Если считанный символ не является цифрой от '0' до '1', то он игнорируется с помощью оператора
continue
. - Если считанный символ является '1', то соответствующий бит в текущем элементе массива
pp
устанавливается в 1. - Значение элемента массива
pp
сдвигается вправо на 1 бит. - Увеличивается счетчик
h
на 1, указывая, что бит был введен. - Если
h
больше 3, это означает, что введена четверка битов, поэтому счетчикh
сбрасывается до 0, а счетчикu
увеличивается на 1, переходя к следующему элементу массива. - Считанный символ выводится на стандартный вывод с помощью
putchar()
. Возможно, это сделано для проверки введенных данных. - Цикл продолжается до тех пор, пока символ не будет считан (т.е. пока
do
условие истинно).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д