Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcje - zero do potęgi zerowej.

Ostatnio zmodyfikowano 2020-04-21 16:48
Autor Wiadomość
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 :)
P-176705
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.
C/C++
#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
P-176706
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?
P-176707
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/pow
We 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.
P-176709
« 1 »
  Strona 1 z 1