Ошибка при переводе десятичного числа в двоичное - C (СИ)

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

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

Доброго времени суток, помогите найти ошибку в программе, которая должна переводить десятичные числа в двоичное.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main()
  5. {
  6. int a,rez, trs, i, j, k, m[8];
  7. printf("vvedit maksimalne 4islo");
  8. scanf("%i", &a);
  9. for(i=0;i<8;i++)
  10. m[i]=0;
  11. rez=2;
  12. for(i=0;i<a;i++)
  13. {
  14. printf("%i-------->", i);
  15. for(j=0;rez>1;j++)
  16. {
  17. rez=i/2;
  18. trs=i-rez;
  19. m[7-j]=trs;
  20. }
  21. for(k=0;k<8;k++)
  22. printf("%i", m[k]);
  23. printf("\n");
  24. }
  25. }
При исполнении абсолютно все числа будут представлены как ноль(00000000).

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

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. dectobin(int number, int massiv[])
  4. {
  5.   int i;
  6.   for (i=15;i>=0;i--)
  7.     {
  8.  
  9.         if( (number%2)==1 )
  10.             {
  11.                 massiv[i]=1;
  12.             }
  13.         else
  14.             {
  15.                 massiv[i]=0;
  16.             }
  17.       number=number/2;
  18.     }
  19. for (i=0;i<16;i++)    //вывод
  20.     {
  21.         if ( (i!=0)&& (i%4)==0 )
  22.         {
  23.             printf(" ");
  24.         }
  25.       printf("%d",massiv[i]);
  26.     }
  27.  
  28. }
  29.  
  30. main ()
  31. {
  32. int mas[16],i,a;
  33. scanf("%d",&a);
  34. for(i=0;i<=a;i++)
  35. {
  36.     printf("%d --> ",i);
  37.     dectobin(i,mas);
  38.     printf("\n");
  39. }
  40. }

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

  1. Включаем файл со стандартными функциями для работы с файлами и стандартным вводом/выводом (stdio.h).
  2. Определяем функцию dectobin, которая принимает два аргумента: целое число и массив.
  3. Внутри функции объявляем переменную i типа int для цикла.
  4. Запускаем цикл for от 15 до 0 с шагом -1.
  5. Внутри цикла проверяем остаток от деления числа на 2 и сохраняем результат в массив.
  6. После цикла выводим массив с помощью функции printf, добавляя пробел после каждого четвёртого элемента.
  7. В функции main объявляем массив mas[16], переменные i и a типа int.
  8. Считываем число с помощью функции scanf в переменную a.
  9. Запускаем цикл for от 0 до a.
  10. Внутри цикла выводим число, приглашаем ввести данные и вызываем функцию dectobin.
  11. В конце цикла добавляем символ новой строки \n.
  12. В конце программы добавляем точку с запятой.

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


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

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

14   голосов , оценка 3.857 из 5

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

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

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