www.mamboteam.com
Project1.pl Advertisement
Start arrow Artykuły arrow Algorytmy arrow Zamiana liczb z dowolnego systemu na dziesiętny
piątek, 10 wrzesień 2010
 
 
Menu główne
Start
Artykuły
FAQ
Download
Kontakt
Ciekawe linki
Mapa serwisu
Logowanie





Zapomniałeś hasła?
Nie masz konta? Załóż sobie
Zamiana liczb z dowolnego systemu na dziesiętny Drukuj E-mail
Oceny: / 1
KiepskiBardzo dobry 
Napisał: Berl   
wtorek, 11 listopad 2008
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. Przy założeniu, że liczba, którą zamieniamy wygląda następująco :
Image




a podstawa systemu to z, to wzór na zamianę wygląda następująco :
Image
Zaimplementowany algorytm wygląda następująco :
 
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))) ; // 4
    end;
end;
UWAGA! Algorytm działa poprawnie tylko na dużych literach.
Komentarze

Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie.
Tylko zarejestrowani użytkownicy mogą pisać komentarze.

 
dalej »
LINKUJ PRO
Gościmy
Odwiedza nas 10 gości
Licznik odwiedzin
117622
 
Góra Góra