Ошибка при переводе десятичного числа в двоичное - C (СИ)
Формулировка задачи:
Доброго времени суток, помогите найти ошибку в программе, которая должна переводить десятичные числа в двоичное.
При исполнении абсолютно все числа будут представлены как ноль(00000000).
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a,rez, trs, i, j, k, m[8];
printf("vvedit maksimalne 4islo");
scanf("%i", &a);
for(i=0;i<8;i++)
m[i]=0;
rez=2;
for(i=0;i<a;i++)
{
printf("%i-------->", i);
for(j=0;rez>1;j++)
{
rez=i/2;
trs=i-rez;
m[7-j]=trs;
}
for(k=0;k<8;k++)
printf("%i", m[k]);
printf("\n");
}
}Решение задачи: «Ошибка при переводе десятичного числа в двоичное»
textual
Листинг программы
#include <stdio.h>
dectobin(int number, int massiv[])
{
int i;
for (i=15;i>=0;i--)
{
if( (number%2)==1 )
{
massiv[i]=1;
}
else
{
massiv[i]=0;
}
number=number/2;
}
for (i=0;i<16;i++) //вывод
{
if ( (i!=0)&& (i%4)==0 )
{
printf(" ");
}
printf("%d",massiv[i]);
}
}
main ()
{
int mas[16],i,a;
scanf("%d",&a);
for(i=0;i<=a;i++)
{
printf("%d --> ",i);
dectobin(i,mas);
printf("\n");
}
}
Объяснение кода листинга программы
- Включаем файл со стандартными функциями для работы с файлами и стандартным вводом/выводом (stdio.h).
- Определяем функцию dectobin, которая принимает два аргумента: целое число и массив.
- Внутри функции объявляем переменную i типа int для цикла.
- Запускаем цикл for от 15 до 0 с шагом -1.
- Внутри цикла проверяем остаток от деления числа на 2 и сохраняем результат в массив.
- После цикла выводим массив с помощью функции printf, добавляя пробел после каждого четвёртого элемента.
- В функции main объявляем массив mas[16], переменные i и a типа int.
- Считываем число с помощью функции scanf в переменную a.
- Запускаем цикл for от 0 до a.
- Внутри цикла выводим число, приглашаем ввести данные и вызываем функцию dectobin.
- В конце цикла добавляем символ новой строки \n.
- В конце программы добавляем точку с запятой.