Zwracanie Silni

0

Cześć
Posiadam program obliczający silnie, ale to jednak za mało.
Potrzebuję aby ktoś mi pomogł zrobić ,żeby ten program zwracał też tą silnie.
Pewna osoba powiedziała ,że jest to wrócenie obliczonej wartości
związane z return.

program n_silnia;
var n : integer;

function Silnia(liczba:word):word;
begin
if liczba=0 then Silnia:=1
else Silnia:=Silnia(liczba-1)*liczba;
end;

begin
write ('Podaj liczbe z ktorej chcesz policzyc n! : ');
readln (n);
write (silnia(n));
readln (n);
end.

1

To jest pascal, tu zamiast return masz Result:= - w stylu delphi lub NazwaFunkcji:= - w stylu oryginalnym. U ciebie funkcja zwraca ta silnie.

0

Dziękuje Panu wyżej. Problem rozwiązany.

2

Typ word ogranicza zakres danych do 0 .. 65535 (zgodnie z http://www.freepascal.org/docs-html/ref/refsu5.html), co daje maksymalną silnię z 8.
Na Twoim miejscu użyłbym QWord (zakres 0 .. 18446744073709551615).

Edit: nie wiem czy ten typ istnieje w Delphi (w FPC na pewno), więc możesz zamiast niego użyć Extended lub innego o wysokiej precyzji.

0

Dzięki za spostrzeżenie. Jak próbowałem np zrobić z inna zmienna to wyskakiwał błąd "Must be in 8087 mode to compile this."

0

no to DWord przynajmniej.
Zaś parametr wystarczy Byte.

0
CoVerS napisał(a):

Dzięki za spostrzeżenie. Jak próbowałem np zrobić z inna zmienna to wyskakiwał błąd "Must be in 8087 mode to compile this."

Jeżeli już korzystasz z tego nieszczęśliwego TP i nie masz możliwości zmiany, kompiluj z {$N+}

0

Okej sprawdzę czy mi to zadziała.

1 użytkowników online, w tym zalogowanych: 0, gości: 1