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

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

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

Задание - написать программу которая будет переводить числе из двоичной в десятичное и наоборот, используя математические алгоритмы. Написал следущее:
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #define max 100
  4. int to_int(int a);
  5. int to_binary(int a);
  6. int inilized();
  7. int main()
  8. {
  9. inilized();
  10. getch();
  11. return 0;
  12. }
  13. int to_int(int a)
  14. {
  15. int f,boyko,putin,korzik,biber;
  16. int elchaninov[max];
  17. boyko=0;
  18. while(a>10)
  19. {
  20. boyko++;
  21. if (a%10==0)
  22. {
  23. elchaninov[boyko]=0;
  24. } else {
  25. elchaninov[boyko]=a%10;
  26. }
  27. a=a/10;
  28. }
  29. putin=boyko;
  30. biber=0;
  31. if (elchaninov[1]=0)
  32. {
  33. korzik=2;
  34. }
  35. if (elchaninov[1]=1)
  36. {
  37. korzik=1;
  38. }
  39. while(putin>0)
  40. {
  41. biber++;
  42. if (elchaninov[biber]=1)
  43. {
  44. korzik=korzik*2;
  45. korzik++;
  46. }
  47. if (elchaninov[biber]=0)
  48. {
  49. korzik=korzik*2;
  50. }
  51. putin--;
  52. }
  53. printf("%d",korzik);
  54. inilized();
  55. }
  56. inilized()
  57. {
  58. int a,b;
  59. 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:");
  60. scanf("%d",&a);
  61. if (a==0)
  62. {
  63. printf("\nInput integer number:") ;
  64. scanf("%d",&b);
  65. to_binary(b);
  66. }
  67. if (a==1)
  68. {
  69. printf("\nInput binary number:") ;
  70. scanf("%d",&b);
  71. to_int(b);
  72. }
  73.  
  74. }
  75. int to_binary(int a)
  76. {
  77. int b,c,maxnum;
  78. int num[max];
  79. c=0;
  80. while (a>=1)
  81. {
  82. c++;
  83. b=a%2;
  84. num[c]=b;
  85. a=a/2;
  86. }
  87. maxnum = c;
  88. c=0;
  89. printf("Binary: ");
  90. while(maxnum>c)
  91. {
  92. c++;
  93. printf("%d",num[c]);
  94. }
  95. printf("\nThank for use this program!\n\n");
  96. inilized();
  97. }
В двоичную систему переводит нормально, а вот в десятичную...Вроде алгоритм правильный, но числа выдает не те(( посмотрите, может кто что подскажет(( P.S. некоторые переменные названы фамилиями одногрупников, не обращайте внимание
P.P.S. Код выделил как С++ ибо форум путал массив [c] с тегом Сишного кода)

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

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

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы