dec -> bin , co jest źle??

0

napisałem prog w c++ builder, ma trzy okienka edit
w jednym wpisujemy liczbe, wciskamy button
i w drugim edicie pojawia sie liczba w systemie binarnym
w 3 edicie jest długosc tej liczby tzn ilosc znaków

jednak coś jest źle bo przy duzych liczbach na koncu pojawiaja sie jakies "krzaczki" np. "111000110ĘI" liczba jest przeliczona dobrze na binarna ale te krzaczki :(
no i troche jest bałagan w kodzie
zobaczcie :

int a, length;
char tab1[31],tab2[31];
AnsiString binary1, binary2;
a=StrToInt(Edit1->Text);
do{
binary1=binary1 + (a % 2);
a=a/2;
}while(a!=0);
sprintf(tab1, "%s", binary1.c_str());
length=binary1.Length();
for(int i=0;i<length;i++)
{
 tab2[i]=tab1[length-1-i];

}
binary2=tab2;
Edit2->Text = binary2;
Edit3->Text = length;

pomóżcie!! :)

0

Nie chce mi się analizować tego dziwnego kodu. Łapaj:

AnsiString __fastcall TForma::du2NKB(unsigned char d)  //zamiana liczby dziesiętnej bez znaku
{NKB[8]=0;                                             //na liczbę dwójkową w kodzie NKB
 for (int i=7; i>=0; i--)
 {NKB[i]=((d%2)+'0');
  d=d/2;
 }
 AnsiString res = NKB;
 return res;
}

Wykorzystanie:

bin->Text = du2NKB(StrToInt(dec->Text));

To jest dla bajta - możesz dorzucić pętlę dla większych liczb.

0

te krzaczki biora sie z braku znaku konca lancucha

'\0'

Jezeli dodasz ten znak na koniec tablicy znakow to bedzie ok, nie wyjdziesz poza zakres tablicy i nie odczytasz przypadkowych danych z pamieci - czyli krzakow

1 użytkowników online, w tym zalogowanych: 0, gości: 1