Inicjalizacja repozytorium

This commit is contained in:
2025-01-27 23:31:45 +01:00
commit e37cf6b784
27 changed files with 1743 additions and 0 deletions
@@ -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.