Cześć walczę prawdopodobnie z dosyć błahym problem ale po 2 dniach nic więcej nie przychodzi mi do głowy.
A mianowicie: tworzę program, który przelicza wartości dziesiętne na binarne, następnie te wartości binarne zapisuje w tablicy 4-ro elementowej. Robię to po to aby moć w łatwy sposób sprawdzać, na którym bicie jest: 0, a na którym: 1 do późniejszych celów(ale ta część jest nieistotna).
Problem:
1)Poprawnie zapisują się tylko liczby 8-15(1000-1111), wszystko poniżej to jakiś random(może nie :p)
2a)Co więcej liczby od 8-11 wywołują się poprawnie tylko za pierwszym razem, przy drugim wywołaniu funkcji "dwojkowo()" z inna liczbą z tego przedziału coś jest nie tak.
2b) postanowiłem to sprawdzić poprzez "zapiątkowanie"/zerowanie(); i mam taki odczyt:
1100 // dla liczby -12, czyli poprawnie
5511 // dla liczby - 14(1110) -czyli fatalnie
Wspomnę, że jestem osobą, która szuka pomocy poprzez post w ostateczności ale już mi ręce opadły i wiem, że sam sobie nie poradzę..
Z góry dziękuje za pomoc
#include<iostream>
using namespace std;
int tab_bin[4]{};
int dwojkowo(int liczba, int binara[])
{
static int j = 0;
int reszta = liczba % 2;
if (liczba > 1)
{
dwojkowo(liczba / 2, binara);
}
binara[j] = reszta;
j++;
return 5;
}
int zerowanie(int tab_zero[])
{
for (int i = 0; i < 4; i++)
{
tab_zero[i] = 5;
}
return 5;
}
int main()
{
int statystyka[16]{ 15,29,42,81,0,13,185,1,43,257,821,644,32,123,46,27 };
dwojkowo(12, tab_bin);
cout << tab_bin[0] << tab_bin[1] << tab_bin[2] << tab_bin[3] << endl;
zerowanie(tab_bin);
dwojkowo(14, tab_bin);
cout << tab_bin[0] << tab_bin[1] << tab_bin[2] << tab_bin[3] << endl;
}