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