Funkcja, a złe argumenty

0

Mam przykładową funkcję:

 
float pierwiastek(float x)
{
    return sqrt(x);
}

Jak wiadomo pierwiastek z liczby nie może być ujemny. Jak najlepiej zabezpieczyć program przed wpisaniem przez użytkownika liczby ujemnej?
Chodzi mi o to by zrobić to w funkcji, przychodzi mi tylko pomysł, żeby zrobić if/else, który przy dodatniej liczbie zwróci wynik, a przy ujemnej 0, jednak chciałbym w przypadku ujemnej liczby zwrócić komunikat typu "Liczba musi być dodatnia". Jest to możliwe?

1

To się nadaje na rzucenie wyjątku :)

1

jeśli to c++ możesz np rzucić wyjątek. I raczej nie powinieneś zwracać 0! Jeśli c to ustawić jakąś zmienną i zwrócić NaN.

0

Dzięki, dopiero zaczynam to rzucania wyjątków jeszcze nie znałem.
Czy tak będzie poprawnie?

 
float pierwiastek(float x)
{
    if(x<0){
        string str="Nie mozna pierwiastkowac liczb ujemnych!";
        throw str;}
    return sqrt(x);
}
try
    {
       cout<<pierwiastek(-9)<<endl;
    }

catch (string str)
    {
       cout<<str;
    } 
2

Jak wiadomo pierwiastek z liczby nie może być ujemny. Jak najlepiej zabezpieczyć program przed wpisaniem przez użytkownika liczby ujemnej?

Dokładnie ta jak mówisz: zabezpieczyć przed wpisaniem, czyli tam gdzie pobierasz od użytkownika liczbę, albo nawet tam gdzie się ją wpisuje (uniemożliwiając wpisana minusa), a nie tam gdzie już to liczysz.

Funkcja pierwiastek jest zupełnie niepotrzebna, używaj po prostu sqrt tam gdzie masz jej użyć.

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