Pierwiastki i potęgi
Ostatnio zmodyfikowano 2018-01-07 23:16
Anette Temat założony przez niniejszego użytkownika |
Pierwiastki i potęgi » 2018-01-07 21:37:56 Napisałam funkcję obliczającą pierwiastek drugiego stopnia z podanej liczby oraz podnoszącą daną liczbę do podanej potęgi. Bez użycia funkcji bibliotecznych. Ogólnie działają, ale tylko wtedy, gdy nie są używane w żadnych innych funkcjach. Takich jak np. funkcja obliczająca sumę pierwiastków drugiego stopnia z kolejnych liczb od 1 do n. Te funkcje wyglądają tak: float POW( int m, float n ) { float wynik = 1; if( n == 0 ) wynik = 1; for( int i = 0; i < n; i++ ) wynik *= m; if( n < 0 ) { for( int i = n; i < 0; i++ ) wynik *= m; wynik = 1 / wynik; } return wynik; } float SQRT_2( int n ) { for( int i = 1; i < n; i++ ) if( i * i == n ) return i; } Przy okazji, wiem, że ta druga funkcja mogłaby nie być potrzebna, gdybym skorzystała z faktu, że pierwiastek n - tego stopnia z liczby m to to samo co m do potęgi 1/n, ale średnio wiem jak dodać coś takiego do funkcji POW. |
|
pekfos |
» 2018-01-07 21:46:56 Ogólnie działają, ale tylko wtedy, gdy nie są używane w żadnych innych funkcjach. |
Czyli nie działają. float SQRT_2( int n ) { for( int i = 1; i < n; i++ ) if( i * i == n ) return i; } |
A to dla jakich danych było testowane? Najzwyklejszy w świecie pierwiastek z dwóch wywołuje tu niezdefiniowane zachowanie. |
|
Anette Temat założony przez niniejszego użytkownika |
» 2018-01-07 22:27:25 Dla danych, których pierwiastki drugiego stopnia są całkowite. Tak, podsumowując, to nie działa |
|
pekfos |
» 2018-01-07 23:16:37 |
|
« 1 » |