From a5d84922118684b9250ebde2c04ca6ab65fc4a4d Mon Sep 17 00:00:00 2001 From: materus Date: Mon, 18 Nov 2024 14:03:45 +0100 Subject: [PATCH] Silnia - Pascal --- .../Pascal/AiSD5_C3/zad1_silnia.pas | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Algorytmy i struktury danych/Pascal/AiSD5_C3/zad1_silnia.pas diff --git a/Algorytmy i struktury danych/Pascal/AiSD5_C3/zad1_silnia.pas b/Algorytmy i struktury danych/Pascal/AiSD5_C3/zad1_silnia.pas new file mode 100644 index 0000000..1b0255a --- /dev/null +++ b/Algorytmy i struktury danych/Pascal/AiSD5_C3/zad1_silnia.pas @@ -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.