Wątek przeniesiony 2018-06-07 19:29 z C# i .NET przez Ktos.

Silnia

0

Rozpoczynam przerabianie zadań z książki Jacka Matulewskiego Visual Studio 2013 - język C# i mam pewien problem.

Przygotuj metodę o sygnaturze static long Silnia(byte argument);
obliczającą silnię liczby podanej w argumencie. Silnia z liczby 3 to 3! = 1·2·3.
Silnia z liczby n to n! = 1·2·...· (n – 1) n. Sprawdź, czy wartości zwracane
przez metodę są prawidłowe, oraz ustal, dla jakich wartości argumentów
wartość tej metody pozostaje w zakresie liczby long (maks. wartość to 9 223
372 036 854 775 807). Dodaj do metody warunek sprawdzający, czy argument
jest z prawidłowego zakresu (w przeciwnym przypadku należy zgłosić
wyjątek ArgumentOutOfRangeException).

Mój kod:
https://pastebin.com/F1pSPfhH

Pytania:

  1. Jak ustalić dla jakich wartości argumentów wartość tej metody pozostaje w zakresie liczby long, skoro podaje liczbę n dla której liczona jest silnia? Czy mam sobie wpisywać w konsoli wartość n i sprawdzić kiedy wartość silni się wysypuje?
  2. Jak mam dodać do metody warunek sprawdzający czy argument jest prawidłowego zakresu skoro przed wejściem do metody wartość n jest typu byte czyli zakres wynosi od 0 do 256 bodajże więc jeśli podam liczbę ujemną to wtedy do tej metody nie wejdę bo wywali błąd?
0
  1. Gdy przekraczamy maksymalną wartość typu liczbowego, zazwyczaj pojawia się ujemna liczba. Dla longa w tym przypadku będzie to n>20
  2. Spróbuj użyć metody Byte.TryParse() do walidacji argumentu :)

https://pastebin.com/FuyBQy3h

0

Próbowałem z checked ale nie ogarniam tego za bardzo, natomiast zrobiłem z try catch jeśli mógłby ktoś sprawdzić czy dobrze? :)
Kod:
https://pastebin.com/wyR3QT3g

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