Перевод десятичного значения числа в двоичное и обратно - C (СИ)
Формулировка задачи:
Задание - написать программу которая будет переводить числе из двоичной в десятичное и наоборот, используя математические алгоритмы. Написал следущее:
В двоичную систему переводит нормально, а вот в десятичную...Вроде алгоритм правильный, но числа выдает не те(( посмотрите, может кто что подскажет((
P.S. некоторые переменные названы фамилиями одногрупников, не обращайте внимание
#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.P.S. Код выделил как С++ ибо форум путал массив [c] с тегом Сишного кода)
Решение задачи: «Перевод десятичного значения числа в двоичное и обратно»
textual
Листинг программы
void write_binary(int n)
{
if(!n)
return;
write_binary(n/2);
putc(n%2 + '0', stdout);
return;
}
Объяснение кода листинга программы
- Передача целочисленного значения n в функцию write_binary.
- Проверка условия n == 0. Если это так, то функция возвращает управление.
- Рекурсивный вызов функции write_binary с аргументом n/2.
- Выполнение операции остаток от деления (n % 2) + '0' для получения значения n % 2 и его преобразования в символ.
- Вывод полученного символа на стандартный вывод с помощью функции putc.
- Возврат управления из рекурсивного вызова функции write_binary.
- Возврат управления из исходного вызова функции write_binary.