Zamiana liczb z dowolnego systemu na dziesiętny Drukuj Email
Ocena użytkowników: / 2
SłabyŚwietny 
Wpisany przez Berl   
wtorek, 11 listopada 2008 08:25

Aby zamienić liczbę zapisaną w dowolnym systemie na system dziesiętny, należy pomnożyć każdą cyfrę wchodzącą w skład tej liczby przez odpowiednią potęgę podstawy systemu. Potęga ta, to indeks cyfry w liczbie licząc od prawej, i zaczynając liczenie od 0.

Zaimplementowany algorytm wygląda następująco :


UWAGA! Algorytm działa poprawnie tylko na dużych literach.

function Dec(Liczba : String ; Podst : Integer) : Cardinal ;
var
  Dana : Integer ;
  i : Integer ;
begin
  Result := 0 ;
  if (Liczba = '') or (Podst < 2) or (Podst > 35) then Exit ;
  for i := 1 to Length(Liczba) do begin
    if Liczba[i] in ['A'..'Z'] then Dana := Ord(Liczba[i]) - Ord('A') + 10
    else Dana := StrToInt(Liczba[i]) ;
    if Dana >= Podst then begin
      Result := 0 ;
      Exit ;
    end;
    Result := Result + Dana * Trunc(Exp((Length(Liczba) - i) * Ln(Podst))) ;
  end;
end;
 
 

Statystyka

Użytkowników : 99
Artykułów : 76
Odsłon : 99789

Gościmy

Naszą witrynę przegląda teraz 2 gości 

Chmura tagów

delphi MySQL dziesiętny WHERE SendMessage Delphi rot-13 cezara binarny system forma WM_SYSCOMMAND ReleaseCapture SET windows szyfrowanie zamiana liczb FROM edytor zmienne