Перевод из бинарного кода в текст на 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++;
    }
}

Объяснение кода листинга программы

  1. pow(int a, int n) - функция возведения в степень. Если n больше 0, то возвращает a*pow(a, n-1). Если n меньше или равно 0, то возвращает 1.
  2. *in10sys(char a, int n)** - функция перевода десятичной системы счисления в двоичную систему счисления.
  3. main() - основная функция программы.
  4. bigbuf[100] - массив символов, в который считывается строка из стандартного ввода.
  5. gets(bigbuf) - функция считывания строки из стандартного ввода в массив bigbuf.
  6. y = bigbuf; - y - это указатель на первый символ в массиве bigbuf.
  7. z = 0; - z - это счетчик числа цифр в числе, которое считывается из стандартного ввода.
  8. while(1) - бесконечный цикл, который прерывается только если в стандартный вывод выводится символ новой строки '\0'.
  9. if(y == ' ' || y == '\0') - условие выхода из цикла. Если y указывает на пробел или нулевой символ, то выполняется следующее действие.
  10. printf(%c,in10sys(y-z, z), z); - выводится символ, который соответствует числу, переведенному из десятичной системы в двоичную.
  11. z = 0; - перед следующим числом счетчик цифр сбрасывается в 0.
  12. *if(y == '\0') break;** - если в стандартный вывод выводится нулевой символ, то цикл прерывается.
  13. ++y; - y увеличивается на 1, чтобы перейти к следующему символу в строке.
  14. z++; - z увеличивается на 1, чтобы перейти к следующей цифре в числе.
  15. y; - это указатель на текущий символ в строке.
  16. z; - это счетчик числа цифр в числе, которое считывается из стандартного ввода.
  17. printf(z=%d\ny=%p\n, z, y); - отладка. Выводится значение z и указатель y.
  18. return 0; - функция main() возвращает 0, что означает успешный конец работы программы.
  19. char - тип данных, который используется для хранения символов.
  20. int - тип данных, который используется для хранения целых чисел.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5