Перевод десятичного значения числа в двоичное и обратно - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание - написать программу которая будет переводить числе из двоичной в десятичное и наоборот, используя математические алгоритмы. Написал следущее:
#include <stdio.h>
#include <conio.h>
#define max 100
 
int to_int(int a);
int to_binary(int a);
int inilized();
 
int main()
{    
    inilized();
    getch();
    return 0;
}
 
int to_int(int a)
{
    int f,boyko,putin,korzik,biber;
    int elchaninov[max];
    boyko=0;
    while(a>10)
    {
      boyko++;
      if (a%10==0)
      {
       elchaninov[boyko]=0;
      } else {
      elchaninov[boyko]=a%10;
      }
      a=a/10;
    }
    putin=boyko;
    biber=0;
    if (elchaninov[1]=0)
    {
    korzik=2;
    }
    if (elchaninov[1]=1)
    {
    korzik=1;
    }
    while(putin>0)
    {
        biber++;
        if (elchaninov[biber]=1)
        {
            korzik=korzik*2;
            korzik++;
        }
        if (elchaninov[biber]=0)
        {
            korzik=korzik*2;
        }
        putin--;
    }
 
    printf("%d",korzik);
    inilized();
}
 
inilized()
{
    int a,b;
    printf("Welcome!\nCreated by Taras Miskevich & Max Korzhik, students DK-32 group, FEL.\nProgram translates the input number to binary system or alarn.\nPress 0 to translate binary to integer, or press 1 to invert translating:");
    scanf("%d",&a);
    if (a==0)
    {
        printf("\nInput integer number:") ;
        scanf("%d",&b);
        to_binary(b);
    }
    if (a==1)
    {
        printf("\nInput binary number:") ;
        scanf("%d",&b);
        to_int(b);
    }

}
 
int to_binary(int a)
{
    int b,c,maxnum;
    int num[max];
    c=0;
    while (a>=1)
    {
     c++;
     b=a%2;
     num[c]=b;
     a=a/2;
    }
    maxnum = c;
    c=0;
    printf("Binary: ");
    while(maxnum>c)
    {
        c++;
        printf("%d",num[c]);
    }
 
    printf("\nThank for use this program!\n\n");
    inilized();
}
В двоичную систему переводит нормально, а вот в десятичную...Вроде алгоритм правильный, но числа выдает не те(( посмотрите, может кто что подскажет(( P.S. некоторые переменные названы фамилиями одногрупников, не обращайте внимание
P.P.S. Код выделил как С++ ибо форум путал массив [c] с тегом Сишного кода)

Решение задачи: «Перевод десятичного значения числа в двоичное и обратно»

textual
Листинг программы
void write_binary(int n)
{
    if(!n)
        return;
    write_binary(n/2);
    putc(n%2 + '0', stdout);
    return;
}

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

  1. Передача целочисленного значения n в функцию write_binary.
  2. Проверка условия n == 0. Если это так, то функция возвращает управление.
  3. Рекурсивный вызов функции write_binary с аргументом n/2.
  4. Выполнение операции остаток от деления (n % 2) + '0' для получения значения n % 2 и его преобразования в символ.
  5. Вывод полученного символа на стандартный вывод с помощью функции putc.
  6. Возврат управления из рекурсивного вызова функции write_binary.
  7. Возврат управления из исходного вызова функции write_binary.

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


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

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

11   голосов , оценка 4.273 из 5
Похожие ответы