P-Programowanie
Tekst
zmniejsz/powiększ
Kolory
jasne/ciemne/kontrast/brak

Potęgowanie liczb C++

Potęgowanie liczb w jest niezwykle proste. Małe liczby można potęgować w pamięci. W informatyce algorytm potęgowania liczb można napotkać w wielu arkuszach maturalnych oraz zadaniach. Potęgowanie w C++ można wykonać za pomocą gotowej funkcji w dodatkowej bibliotece lub napisać własną funkcję.

Czym jest potęgowanie

Potęgowanie liczb jest to działanie matematyczne, polegające na wielokrotnym mnożeniu liczby przez samą siebie. Liczba, którą będziemy potęgować nazywa się podstawą a górny indeks określający ile razy pomnożymy podstawę przez samą siebie, nazywa się wykładnikiem.

Oto przykładowy kod programu w C++ pozwalający obliczyć dowolną potęgę:

Na maturze lub sprawdzianie, gdy liczy się czas, można skorzystać z gotowej funkcji zamiast pisać własną. W tym celu niezbędne będzie zaimportowanie biblioteki <math.c>. Potęgowanie odbywa się za pomocą funkcji pow(), tak samo jak pierwiastkowanie. Wynika to z faktu, że potęgowanie jest operacją odwrotną do pierwiastkowania.

Udostępnij ten artykuł na fejsie lub zostaw komentarz!

Komentarze:

Użytkownik gosc napisał/a:

05 listopada 2012


Przepraszam, ale ten kod „bez dodatkowych bibliotek” jest chyba błędny. Jak np. podam jako podstawę 2 i wykładnik 3 program zwraca 16 a nie 8 :( Co jest z nim nie tak?

Użytkownik Karol napisał/a:

06 listopada 2012


Witaj. Dzięki za znalezienie błędu! Artykuł został poprawiony.

Użytkownik gosc napisał/a:

07 listopada 2012


Nie ma sprawy. A tak ogólnie to fajna stronka, przygotowuje się właśnie do matury z informatyki i jest bardzo pomocna, dzięki;)

Użytkownik Karol napisał/a:

05 stycznia 2013


Miło słyszeć :)

Użytkownik Tomasz napisał/a:

15 lutego 2013


Witam. Korzystam z Visual Studio 2010 i program nie znajduje funkcji pow.. Wiesz może dlaczego?

Użytkownik Arek napisał/a:

19 lutego 2013


@Tomasz
pewnie dlatego, że nie zainkludowałeś math.h

@auth
#include
#include

sądzę, że jedna z nich może spokojnie sobie wylecieć…

Użytkownik Adam Gabryś napisał/a:

09 czerwca 2013


Kod zawiera błąd
Jeżeli wykładnik jest równy zeru powinien zwrócić 1.
Poprawnie bedzie
{
int wynik=1;
for (int i = 0; i<wykladnik; i++)
wynik*=podstawa;

return wynik;
}

Użytkownik Karol napisał/a:

09 czerwca 2013


Słusznie!

Użytkownik Rafał napisał/a:

14 marca 2014


sprawdziłem program, dobrze dziala.
Dobra pomoc naukowa przed trudnym testem pracodawcy.

Użytkownik Rafał napisał/a:

14 marca 2014


drugi przykład nie chciał przejsc przez kompilację w Visual studio 10. pomogło zmiana deklaracji
float a;

Użytkownik krystian napisał/a:

14 października 2014


np. 2^(1/2) = √2
można to wykorzystać bez zmiany tej funkcji, by tak liczyła pierwiastki?

Użytkownik Ola napisał/a:

22 maja 2015


Co w sytuacji, gdy użytkownik
poda: a<0 i n<0 ?

Użytkownik Karol napisał/a:

23 maja 2015


@Ola
W przypadku podania ujemnej podstawy a algorytm zachowuje się poprawnie, przedstawia wynik potęgowania dodatni dla wykładnika 2n oraz ujemny dla wykładnika 2n-1.

Podanie ujemnej wartości n to już inny problem dla innego algorytmu.

Użytkownik Patryk napisał/a:

02 listopada 2015


Pragnę się jeszcze przyczepić, gdyż przykład 1. pomimo informacji w tekście „pozwalający obliczyć dowolną potęgę” to nie jest w stanie tego dokonać :). Otóż typ zmiennej int może przechowywać tylko określoną ilość znaków (do liczby 2147483647) i np. potęga 6^100 daje wynik 0. Nawet zastosowanie typu ‚unsigned long long’ nie rozwiąże problemu. Natomiast nie próbowałem drugiego przykładu i ciekaw jestem, czy on sobie z takim równaniem poradzi :). Jeśli to możliwe, to proszę o małą poprawkę w tekście.

Użytkownik Karol napisał/a:

03 listopada 2015


To zadanie jest natury algorytmicznej. Nie znajdziesz takiego języka programowania ani systemu, gdzie nie będziesz ograniczony przez pamięć. Zadanie jest bezbłędne, ty natomiast piszesz juz o innym problemie.

Zachęcam Cię do zostawienia komentarza!

Ilość znaków: 0

Zachęcam Cię do polubienia bloga na facebooku! Dając lajka wspierasz moją pracę - wszystkie artykuły na blogu są za darmo!