W funkcji main() jest wywołanie funkcji fu_pow. Nie wiem dlaczego gdy funkcja ta pracuje w pętli powoduje błąd. Program działa bez problemu gdy wartości są przypisane do tablicy bin_wagi "z ręki". Ten sam problem pojawia się przy użyciu bibliotecznej funkcji pow().
#include <iostream>
using namespace std;
int fu_pow(int pod, int wyk)
{
if(wyk==0) return 1;
if(wyk==1) return pod;
else
{
return pod*fu_pow(pod, wyk-1);
}
}
int* fu_dec_bin(int* tab, int liczba, int*wsk, int n=8)
{
int suma=0;
for(int i=0; i<n; i++) wsk[i]=1;
for(;;)
{
suma += *tab;
if(suma>liczba)
{
suma -= *tab;
*wsk=0;
}
tab++;
wsk++;
if(suma==liczba) break;
}
return wsk;
}
int main()
{ int n=8;
int bin_tab[n];
int dec_liczba=27;
<strong> int bin_wagi[n]; //={128, 64, 32, 16, 8, 4, 2, 1};</strong>
for(int i=n; i>=0; i--) bin_wagi[i]=fu_pow(2, i);
fu_dec_bin(bin_wagi, dec_liczba, bin_tab);
for(int i =0; i<n; i++) cout<<bin_tab[i]<<" ";
return 0;
}