Inicjalizacja repozytorium
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
program silnia;
|
||||
function Czytaj_liczbe: Int64;
|
||||
var
|
||||
liczba: Int64;
|
||||
begin
|
||||
Write('Podaj liczbę calkowita: ');
|
||||
ReadLn(liczba);
|
||||
Czytaj_liczbe := liczba;
|
||||
end;
|
||||
|
||||
function Silnia_rekurencyjna(n: Int64): Int64;
|
||||
begin
|
||||
if n = 0 then
|
||||
Silnia_rekurencyjna := 1
|
||||
else
|
||||
Silnia_rekurencyjna := n * Silnia_rekurencyjna(n - 1);
|
||||
end;
|
||||
|
||||
function Silnia_iteracyjna(n: Int64): Int64;
|
||||
var
|
||||
wynik, i: Int64;
|
||||
begin
|
||||
wynik := 1;
|
||||
for i := 1 to n do
|
||||
wynik := wynik * i;
|
||||
Silnia_iteracyjna := wynik;
|
||||
end;
|
||||
|
||||
procedure Wypisz_wyniki(wynikRek, wynikIter: Int64);
|
||||
begin
|
||||
WriteLn('Silnia rekurencyjna: ', wynikRek:10);
|
||||
WriteLn('Silnia iteracyjna: ', wynikIter:10);
|
||||
end;
|
||||
|
||||
procedure Glowna_procedura;
|
||||
var
|
||||
liczba, wynikRek, wynikIter: Int64;
|
||||
begin
|
||||
liczba := Czytaj_liczbe;
|
||||
if liczba < 0 then
|
||||
begin
|
||||
WriteLn('Silnia jest zdefiniowana tylko dla liczb nieujemnych.');
|
||||
Exit;
|
||||
end;
|
||||
|
||||
wynikRek := Silnia_rekurencyjna(liczba);
|
||||
wynikIter := Silnia_iteracyjna(liczba);
|
||||
Wypisz_wyniki(wynikRek, wynikIter);
|
||||
end;
|
||||
|
||||
begin
|
||||
Glowna_procedura()
|
||||
end.
|
||||
@@ -0,0 +1,71 @@
|
||||
program silnia_czas;
|
||||
uses sysUtils;
|
||||
function Czytaj_liczbe: Int64;
|
||||
var
|
||||
liczba : Int64;
|
||||
begin
|
||||
Write('Podaj liczbe calkowita: ');
|
||||
ReadLn(liczba);
|
||||
Czytaj_liczbe := liczba;
|
||||
end;
|
||||
|
||||
function Silnia_rekurencyjna(n: Int64): Int64;
|
||||
begin
|
||||
if n = 0 then
|
||||
Silnia_rekurencyjna := 1
|
||||
else
|
||||
Silnia_rekurencyjna := n * Silnia_rekurencyjna(n - 1);
|
||||
end;
|
||||
|
||||
function Silnia_iteracyjna(n: Int64): Int64;
|
||||
var
|
||||
wynik, i : Int64;
|
||||
begin
|
||||
wynik := 1;
|
||||
for i := 1 to n do
|
||||
wynik := wynik * i;
|
||||
Silnia_iteracyjna := wynik;
|
||||
end;
|
||||
|
||||
procedure Wypisz_wyniki(liczba,ile,wynikRek, wynikIter : Int64; CzasI, CzasR : TdateTime);
|
||||
begin
|
||||
writeln('Podana liczba: ', liczba);
|
||||
writeln('Podana liczba iteracji', ile);
|
||||
writeln('Czas silni rekurencyjnej: ', CzasR:0:2, ' sekund');
|
||||
WriteLn('Silnia rekurencyjna: ', wynikRek:10);
|
||||
writeln('Czas silni iteracyjnej: ', CzasI:0:2, ' sekund');
|
||||
WriteLn('Silnia iteracyjna: ', wynikIter:10);
|
||||
end;
|
||||
|
||||
|
||||
procedure Glowna_procedura;
|
||||
var
|
||||
CzasI, CzasR : TdateTime;
|
||||
i : Int64;
|
||||
ile, liczba : Int64;
|
||||
wynikI, wynikR : Int64;
|
||||
begin
|
||||
liczba := Czytaj_liczbe();
|
||||
Write('Podaj liczbe iteracji: ');
|
||||
ReadLn(ile);
|
||||
CzasI := Time();
|
||||
for i := 0 to ile do
|
||||
wynikI := Silnia_iteracyjna(liczba);
|
||||
CzasI := Time()-CzasI;
|
||||
CzasI := CzasI*24*60*60;
|
||||
|
||||
|
||||
CzasR := Time();
|
||||
for i := 0 to ile do
|
||||
wynikR := Silnia_rekurencyjna(liczba);
|
||||
CzasR := Time()-CzasR;
|
||||
CzasR := CzasR*24*60*60;
|
||||
|
||||
|
||||
Wypisz_wyniki(liczba,ile,wynikR,wynikI,CzasI,CzasR);
|
||||
|
||||
end;
|
||||
|
||||
begin
|
||||
Glowna_procedura()
|
||||
end.
|
||||
@@ -0,0 +1,33 @@
|
||||
program suma_cyfr;
|
||||
function Czytaj_liczbe : Integer;
|
||||
var
|
||||
liczba : Integer;
|
||||
begin
|
||||
write('Podaj liczbe: ');
|
||||
readln(liczba);
|
||||
Czytaj_liczbe:=liczba;
|
||||
end;
|
||||
|
||||
function Suma_cyfr(liczba : Integer) : Integer;
|
||||
begin
|
||||
if liczba = 0 then
|
||||
Suma_cyfr:=0
|
||||
else
|
||||
Suma_cyfr:= (abs(liczba) mod 10) + Suma_cyfr(liczba div 10);
|
||||
end;
|
||||
|
||||
procedure Wypisz_wynik(liczba : Integer; suma : Integer );
|
||||
begin
|
||||
writeln('Suma cyfr liczby ', liczba, ' to ', suma);
|
||||
end;
|
||||
|
||||
procedure Glowna_procedura;
|
||||
var liczba : Integer;
|
||||
begin
|
||||
liczba:=Czytaj_liczbe();
|
||||
Wypisz_wynik(liczba,Suma_cyfr(liczba));
|
||||
end;
|
||||
|
||||
begin
|
||||
Glowna_procedura();
|
||||
end.
|
||||
@@ -0,0 +1,65 @@
|
||||
program potega;
|
||||
function potega_iter(a : Integer ;n : Integer ) : Integer;
|
||||
var
|
||||
wynik, i : Integer;
|
||||
begin
|
||||
wynik := 1;
|
||||
for i := 1 to n do
|
||||
wynik:= wynik*a;
|
||||
potega_iter:= wynik;
|
||||
end;
|
||||
|
||||
function potega_rek(a : Integer ;n : Integer ) :Integer;
|
||||
begin
|
||||
if n = 0 then
|
||||
potega_rek:= 1
|
||||
else
|
||||
potega_rek:= a * potega_rek(a,n-1);
|
||||
end;
|
||||
|
||||
|
||||
function potega_iter_kwr(a : Integer ;n : Integer ) : Integer;
|
||||
var
|
||||
wynik : Integer;
|
||||
begin
|
||||
wynik := 1;
|
||||
if n = 1 then
|
||||
wynik:=a;
|
||||
while n>1 do
|
||||
begin
|
||||
if n mod 2 = 1 then
|
||||
begin
|
||||
wynik:=a*wynik;
|
||||
n:=n-1;
|
||||
end
|
||||
else
|
||||
begin
|
||||
wynik:=a*a*wynik;
|
||||
n:=n div 2;
|
||||
end;
|
||||
end;
|
||||
potega_iter_kwr:=wynik;
|
||||
end;
|
||||
|
||||
function potega_rek_kwr(a : Integer ;n : Integer ) :Integer;
|
||||
var
|
||||
wynik : Integer;
|
||||
begin
|
||||
wynik:=0;
|
||||
if n = 0 then
|
||||
potega_rek_kwr:= 1
|
||||
else if n mod 2 = 1 then
|
||||
potega_rek_kwr:= a * potega_rek_kwr(a,n-1)
|
||||
else
|
||||
begin
|
||||
wynik := potega_rek_kwr(a, n div 2);
|
||||
potega_rek_kwr:=wynik*wynik;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
WriteLn('Potega Iteracyjna: ', potega_iter(2,3));
|
||||
WriteLn('Potega Rekurencyjna: ', potega_rek(2,3));
|
||||
WriteLn('Potega Iteracyjna Kwadratowa: ', potega_iter_kwr(2,3));
|
||||
WriteLn('Potega Rekurencyjna Kwadratowa: ', potega_rek_kwr(2,3));
|
||||
end.
|
||||
Reference in New Issue
Block a user