Created
January 24, 2015 17:40
-
-
Save tischsoic/f06a06bf02f8197c3d97 to your computer and use it in GitHub Desktop.
Program z funkcjami zmiany systemu liczbowego zapisu liczb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program ZamianaLiczb; | |
uses sysutils; | |
//Funkcja potegujaca, potrzebna do funkcji 'naDecymalny' | |
Function potegowanie(podstawa, potega : integer) : integer; | |
var m, p : integer; | |
begin | |
potegowanie := 1; | |
m := potega; | |
p := podstawa; | |
while m > 0 do | |
begin | |
if Odd(m) then potegowanie := potegowanie * p; | |
m := m div 2; | |
p := p * p; | |
end; | |
end; | |
//Funkcja zamienia litere na cyfre | |
function jakaLiczba(a : char) : integer; | |
begin | |
if (a >= '0') and (a <= '9') then jakaLiczba := ord(a) - 48; | |
if (a >= 'a') and (a <= 'f') then jakaLiczba := ord(a) - 87; | |
if (a >= 'A') and (a <= 'F') then jakaLiczba := ord(a) - 55; | |
end; | |
//Funkcja zamienia liczbe na odpowiadajaca jej cyfre zapiasna cyfra, lub litera | |
function doCyfry(a : integer) : char; | |
begin | |
if (a >= 0) and (a <= 9) then doCyfry := IntToStr(a)[1]; | |
if (a >= 10) and (a <= 15) then doCyfry := Chr(a + 55); | |
end; | |
//Funkcja zamienia liczbe z dowolnego systemu na dziesiatkowy | |
Function naDecymalny(liczba : string; podstawa : integer) : integer; | |
var skonwertowana : string; i : integer; | |
begin | |
naDecymalny := 0; | |
for i := 1 to Length(liczba) do | |
begin | |
naDecymalny := naDecymalny + jakaLiczba(liczba[i])*potegowanie(podstawa, Length(liczba) - i); | |
//Writeln(jakaLiczba(liczba[i])); | |
end; | |
end; | |
//Funkcja zamienia liczbe z dowolnego systemu na dowolny | |
Function zSystemuNaSystem(liczba : string; bazowy, nowy : integer) : string; | |
var pomocniczy : string; i, poKonwersji : integer; | |
begin | |
//Najpierw zamieniamy liczbe na system dziesietny | |
if bazowy <> 10 then poKonwersji := naDecymalny(liczba, bazowy); | |
Writeln(poKonwersji); | |
//A nastepnie zamieniamy liczbe wyrazona w systemie dziesietnym na liczbe zapisana w dowolnym innym systemie w odwroconej kolejnosci | |
while poKonwersji > 0 do | |
begin | |
pomocniczy := pomocniczy + doCyfry(poKonwersji mod nowy); | |
poKonwersji := poKonwersji div nowy; | |
end; | |
//Potrzebne do odwrocenia stringu | |
i := Length(pomocniczy); | |
//Musimy odwrocic string: | |
while i > 0 do | |
begin | |
zSystemuNaSystem := zSystemuNaSystem + pomocniczy[i]; | |
Inc(i, -1); | |
end; | |
//Wypisujemy juz odwrocony | |
Writeln(zSystemuNaSystem); | |
end; | |
var | |
liczba : string; | |
i : integer; | |
begin | |
Writeln(potegowanie(2,10), ' ', naDecymalny('44', 6), ' ', doCyfry(15)); | |
zSystemuNaSystem('44', 6, 2); | |
Readln(i); | |
end. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment