Перевод из бинарного кода в текст на C - C (СИ)
Формулировка задачи:
Всем привет! Кто знает , каким образом сделать что бы программа бинарный код перевоила в буквы, не используя при этом библиотеку string.h и функцию scanf?
Решение задачи: «Перевод из бинарного кода в текст на C»
textual
Листинг программы
int pow(int a, int n) { if(n > 0) return a*pow(a, n-1); else return 1; } int in10sys(char *a, int n) { int i = 0; int m = 0; int str = n; while(i < n) { m = m + (*a-'0')*pow(2,str - i -1); i++; *a++; } return m; } int main() { char bigbuf[100]; gets(bigbuf); char *y = bigbuf; int z = 0; while(1) { if(*y == ' ' || *y == '\0') { printf("%c",in10sys(y-z, z), z); z = 0; if(*y == '\0') break; ++y; } ++y; z++; } }
Объяснение кода листинга программы
- pow(int a, int n) - функция возведения в степень. Если n больше 0, то возвращает a*pow(a, n-1). Если n меньше или равно 0, то возвращает 1.
- *in10sys(char a, int n)** - функция перевода десятичной системы счисления в двоичную систему счисления.
- main() - основная функция программы.
- bigbuf[100] - массив символов, в который считывается строка из стандартного ввода.
- gets(bigbuf) - функция считывания строки из стандартного ввода в массив bigbuf.
- y = bigbuf; - y - это указатель на первый символ в массиве bigbuf.
- z = 0; - z - это счетчик числа цифр в числе, которое считывается из стандартного ввода.
- while(1) - бесконечный цикл, который прерывается только если в стандартный вывод выводится символ новой строки '\0'.
- if(y == ' ' || y == '\0') - условие выхода из цикла. Если y указывает на пробел или нулевой символ, то выполняется следующее действие.
- printf(
%c
,in10sys(y-z, z), z); - выводится символ, который соответствует числу, переведенному из десятичной системы в двоичную. - z = 0; - перед следующим числом счетчик цифр сбрасывается в 0.
- *if(y == '\0') break;** - если в стандартный вывод выводится нулевой символ, то цикл прерывается.
- ++y; - y увеличивается на 1, чтобы перейти к следующему символу в строке.
- z++; - z увеличивается на 1, чтобы перейти к следующей цифре в числе.
- y; - это указатель на текущий символ в строке.
- z; - это счетчик числа цифр в числе, которое считывается из стандартного ввода.
- printf(
z=%d\ny=%p\n
, z, y); - отладка. Выводится значение z и указатель y. - return 0; - функция main() возвращает 0, что означает успешный конец работы программы.
- char - тип данных, который используется для хранения символов.
- int - тип данных, который используется для хранения целых чисел.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д