Причина в том, что вы записываете двоичный файл в вывод, а не в массив. Что вам нужно сделать, это отправить массив в вашу функцию и заполнить его.
Например, скажем, функция выглядит следующим образом:
void to_binary(int number, int *array, int position_to_fill);
Тогда вы можете точно так же, как вы написали, но вместо cout
вы пишете в массив в правильном месте:
void to_binary(int number, int *array, int position_to_fill)
{
int remainder;
if (position_to_fill < 0) // shouldn't really happen
return;
if (number <= 1)
{
array[position_to_fill] = number;
return;
}
remainder = number % 2;
binary(number >> 1, array, position_to_fill-1);
array[position_to_fill] = number;
}
Таким образом, вы заполняете массив от последней позиции к первой последней позицией, содержащей младший значащий бит.
Теперь при вызове функций вместо
for(i = 31; i >= 0; i--)
{
a[i] = binary(arg1); //PROBLEM AREA
b[i] = binary(arg2); //PROBLEM AREA
}
Вы пишете
to_binary(arg1, a, 31);
to_binary(arg2, b, 31);