Problem polega na konwersji liczby dziesietnej/binarnej (takiej ktora mam w int) na inny system, jak wszyscy wiedza, mozna to zrobic dzielac modulo, potem odwracajac wynik itepe, tam zlozonosc jest jakos (3/4)n ALE podobno istnieje mniej zlozony sposob, slyszal ktos o czyms takim?
0
0
Wykorzystanie rekurencji dzięki czemu nie ma potrzeby "odwracania" otrzymanego wyniku i wszystko zajmuje kilka linijek (plus tablica znaków np. "0123456789ABCDEF" co daje możliwość konwersji liczby dziesiętnej na system od binarnego do heksadecymalnego).
0
I dodatkowo gotowa procedurka:
const
tablica : array[0..15] of char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
procedure DecToSys(liczba, system: integer; var Str: string);
var
reszta : integer;
begin
reszta := liczba mod system;
liczba := liczba div system;
if liczba <> 0 then
DecToSys(liczba, system, Str);
Str := Str + tablica[reszta];
end;
No i wywołanie:
s := '';
DecToSys(strtoint(edit1.text), 2, s); //zależnie od systemu (tu mamy 2 czyli binarny)
label.Caption := s;