Skip to content

Instantly share code, notes, and snippets.

@tischsoic
Created January 24, 2015 17:40
Show Gist options
  • Save tischsoic/f06a06bf02f8197c3d97 to your computer and use it in GitHub Desktop.
Save tischsoic/f06a06bf02f8197c3d97 to your computer and use it in GitHub Desktop.
Program z funkcjami zmiany systemu liczbowego zapisu liczb
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