Как ввести двоично-десятичный код числа в массив - 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
условие истинно).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д