Funkcje - zero do potęgi zerowej.
Ostatnio zmodyfikowano 2020-04-21 16:48
Goglex Temat założony przez niniejszego użytkownika |
Funkcje - zero do potęgi zerowej. » 2020-04-20 23:38:58 Dzień dobry, Chciałem napisać program wykonujący potęgowanie dla każdej konfiguracji, tzn. dla dodatniej, ujemnej i zerowej podstawy i wykładnika. Problem pojawił się przy działaniu zero do potęgi zerowej. Program napisałem w funkcji. Przy problematycznym działaniu chce wyświetlić komunikat o błędzie (bo jest to działanie niezdefiniowane), ale nie wiem jak to zrobić. Da się jakoś zrobic tak, żeby część funkcji zwracała wartość liczbowa, a część nie? co zrobićżeby w cout w funkcji main wyświetliła się napis "blad". Jak dam couta w tej funkcji to w main pojawi się napis, ale tez takie coś: -nan(ind)
Będę wdzięczny za wskazówki :) |
|
pekfos |
» 2020-04-20 23:47:35 Masz funkcję zwracającą liczbę, więc zawsze zwracasz liczbę. Dla liczb zmiennoprzecinkowych wypisało Ci nan, więc możesz w zasadzie użyć tej wartości do określenia błędu. Nan jest różne od każdej liczby, wliczając samą siebie, więc test f != f jest prawdziwy dla nan i fałszywy dla poprawnej liczby. #include <iostream> #include <limits>
int main() { float f = 1.2f; std::cout << "f : " << f << '\n'; std::cout << "f != f : " <<( f != f ) << '\n'; f = std::numeric_limits < float >::quiet_NaN(); std::cout << "f : " << f << '\n'; std::cout << "f != f : " <<( f != f ) << '\n'; } f : 1.2 f != f : 0 f : nan f != f : 1 |
|
Goglex Temat założony przez niniejszego użytkownika |
» 2020-04-21 00:03:46 Czyli w zasadzie to, że wyświetliło mi nan jest tożsame z błędem? Dobrze rozumiem? |
|
pekfos |
» 2020-04-21 16:48:54 A jak w ogóle masz zaimplementowane potęgowanie? pow()? Tu masz opisane jak są obsługiwane wszystkie przypadki. https://en.cppreference.com/w/cpp/numeric/math/powWe własnej implementacji potęgowania możesz obsłużyć błędy jak tylko chcesz. Możesz wyrzucić wyjątek, albo zwrócić informację o błędzie, a wynik przez argument. |
|
« 1 » |