Podnoszenie zadanej liczby do zadanej potęgi

0

Witam wydaje mi się,że dobrze zrobiłem program w którym podaje liczbę i do jakiej potęgi mam ją podnieść,ale jedna rzecz brzydko wygląda w tym programie.

#include <iostream>

using namespace std;
int main()
{
    int x, y;

    cout << "Jaka liczbe chcesz potegowac" << endl;
    cin >> liczba;
    int wynik = liczba;
    cout << "do jakiej potegi" << endl;
    cin >> potega;
    for (int i = 1; i < potegi; ++i) {
        wynik = wynik * liczba;
    }
    cout << z;
    return 0;
}
 

Ale boli mnie to

    int wynik = liczba; 

że jest w połowie kodu,ale jak nie dam tego po wypisaniu liczby to nic nie wychodzi ,czy używając samych pętli da sie to zrobić ładniej?

0

Jak Ci się nie podoba, że jest na środku to sobie przenieś na początek. Poza tym program źle działa dla potęgi = 0.
Zazwyczaj robi się to tak, że do wyniku przypisuje się początkowo 1 a pętla działa od i = 0. Jak też coś tutaj wklejasz to fajnie jakby się kompilowało bo tak to mamy jakieś zmienne x, z oraz niezadeklarowany wynik itd.

0

Przypisz jeden zamiast liczba, iteruj od zera. Mam nadzieję, że wiesz o istnieniu std::pow i piszesz sobie dla nauki własną implementację.

0
#include <iostream>

using namespace std;
int main()
{
    int liczba,potega;
    int wynik=1;
    cout << "Jaka liczbe chcesz potegowac" << endl;
    cin >> liczba;
    cout << "do jakiej potegi" << endl;
    cin >> potega;
    for (int i = 0; i < potega; ++i) {
        wynik = wynik * liczba;
    }
    cout << wynik;
    return 0;
}
 

Tak zrobiłem teraz i działa,dzięki i chyba nie chodziło,żeby wynik do 0 przypisać bo wtedy zawsze wyjdzie 0.

1

Zrób do tego potęgowania funkcję i przetestuj z kilkoma przypadkami szczególnymi.

0^0
0^1
1^0
1^1
1^2
2^0
2^1
2^3

http://hotmath.com/hotmath_help/topics/zero-power-zero.html

Ujemne czy ułamkowe liczby możesz pominąć.
Jak chcesz zarobić celującą ocenę to zaimplementuj "Integer Power Algorithm".

BTW, takie właśnie było pytanie na rozmowie rekrutacyjnej w Amazon.

0

Jedynym problemem jest to, że 00 nie jest reprezentowalne w arytmetyce całkowitoliczbowej. Liczby zmiennoprzecinkowe mają właśnie do takich przypadków specjalną reprezentację.

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