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