Potęga w kalkulatorze c++

0

Witam mam problem ponieważ napisałem kalkulator w c++ oparty na if i z podstawową biblioteką <iosteram>.Kalkulator ma możliwość potęgowania jednak tylko do potęgi 2 i moje pytanie to jak zrobić by kalkulator był do dowolnej potęgi nie używając żadnej innej biblioteki? Bardzo proszę o pomoc poniżej daje kod w którym jest zapisana sama potęga. Pozdrawiam Hubert.

else if (dzialanie == '^')
{
    cout << "Wybrano Potegowanie, Podaj liczbe ktora chcesz potegowac." << endl;
    cout << "Pierwsza Liczba: " << endl;
    cin >> pierwsza_liczba;
    cout << "Twoj wynik to: " << pierwsza_liczba * pierwsza_liczba << endl << endl << endl << endl;
    cout << "Za 7 sekund Kalkulator sie zresetuje" << endl;
    Sleep(7000);
    system("cls");
}
0
double wynik(double liczba, int potega)
{
    double wynik = liczba;
    //tutaj za pomocą pętli for() pomnoz wynik*liczba tyle razy ile masz w potedze
    return wynik;
}
0

Czemu działania

cout < "Twoj wynik to: " << pierwsza_liczba * pierwsza_liczba << endl << endl << endl << endl;

Czemu nie stworzysz własnego nagłówka funkcji (int) z argumentem i nie wywołasz sobie tego z funkcji zwracającej wartość? Moim zdaniem tak się to powinno pisać, a nie pakować działanie całego kodu w main().

1

Najszybciej - pętla.
Najpoprawniej szybkie potęgowanie - ten sam algorytm co do szybkiego mnożenia.
Co do bibliotek, masz cout - to już masz bibliotekę standardową która obejmuje również funkcje zawarte pod <cmath> a tam jest pow()
Widzę Sleep(7000); czyli oprócz biblioteki standardowej użyłeś biblioteki WinAPI, nie rozumiem chcesz bez innej biblioteki ale już używasz inną.

0

Czy mógł by mi ktoś to napisać tylko bez żadnej innej biblioteki bo jakoś tego nie kumam

0
  1. iloczyn = 1
  2. w pętli gdzie i się zmienia od 0 i jest mniejsza od podanej potęgi, pomnóż iloczyn przez bazę.

lub https://pl.wikipedia.org/wiki/Algorytm_szybkiego_pot%C4%99gowania

0

Ja bym to zrobił w ten sposób:

#include <iostream>
#include <cmath>
double potegowanie(int pierwsza, double druga);
int main()
{
	using namespace std;
	
	int pierwsza;
		
	cout << "Wybrano potegowanie. Podaj liczbe ktora chcesz potegowac: ";
	cin >> pierwsza;
	
	double druga;
	
	cout << "Do jakiej potegi chcesz potegowac? ";
	cin >> druga;
	
	cout << "Twoj wynik to: " << potegowanie(pierwsza, druga) << endl;
	
	return 0;
}

double potegowanie(int pierwsza, double druga)
{
	return pow(pierwsza, druga);
}

Co do wykonania tego w pętlach to się nie wypowiem, bo ten rozdział mam przed sobą dopiero ;p

0

sorry ale nic nie rozumiem :(

0

Jeśli nic nie rozumiesz przeczytaj: http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Funkcje-pierwsze-starcie/291 a następnie obczaj tę funkcję: http://cpp0x.pl/dokumentacja/standard-C/pow/34

5

Wejście: 5 ^ 3
Wyjście:

podaj [a] [znak] [b]: 
5 ^ 3 = 125

Program:

funkcja potega(liczba podstawa, liczba wykladnik) zwraca(liczbe)
  liczba ile_razy = wykladnik;
  liczba akumulator = podstawa;
  dopoki ile_razy --> 1 rob
      akumulator *= podstawa;
  wystarczy;
  
  zwroc akumulator;
wystarczy;

alias_funkcji(potega, potege);


program("N-ty kalkulatorek na forum") to
  staly slownik<znakow i akcji> slownik_akcji zawiera
    pare('+' i [](liczba a oraz 
                  liczba b){ zwroc a + b; }),
    pare('-' i [](liczba a oraz
                  liczba b){ zwroc a - b; }),
    pare('^' i [](liczba a oraz
                  liczba b){ zwroc potege(a, b); })
  wystarczy;
  
  liczba a, b;
  znak decyzja;
  
  wypisz << "podaj [a] [znak] [b]: " << koniec_linii;
  pobierz >> a >> decyzja >> b;
  
  liczba wynik = wartosc_slownika(slownik_akcji, decyzja)(a, b);
  
  wypisz << a << " " << decyzja << " " << b << " = " << wynik << koniec_linii;
wystarczy;

Przykładowe uruchomienie oraz zestaw regułek potrzebnych do skompilowania tego "kodu w C++" znajdziesz tu: http://ideone.com/BReyru

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