program liczący liczbę do n potęgi

0

Witam,

Chciałem napisać program liczący dowolną liczbę do dowolnej potęgi n, ale coś nie idzie i nie wiem jak to zmienić. Mój kod:

 #include <iostream>
#include <cmath>
using namespace std;

int main()
{
	cout << "PROGRAM LICZACY LICZBY RZECZYWISTE DO N POTEGI\n\n";

	int liczba,potega;

	cout << "Podaj liczbe : ";
	cin >> liczba;
	
	cout << "Podaj potege : ";
	cin >> potega;

	for(int i = 0; i < potega; i++)
	{
		if(potega == 0 ) liczba = 1;
		if(potega == 1) liczba = liczba;
		
		if(potega >= 2) liczba = liczba * liczba;
		

	}
	cout << liczba << endl;
	
	system("pause");
}
1

Taka implementacja pętli nie ma specjalnie sensu.

        if(potega >= 2) liczba = liczba * liczba;

Dla potega == 2 przypiszesz do zmiennej liczba jej kwadrat.
Dla potega == 3 przypiszesz do zmiennej liczba jej kwadrat, tyle, że ona już jest kwadratem oryginalnej, więc przypiszesz liczba4

Trzymaj mnożnik oddzielnie od wyniku.

int wynik = 1;
for(int i = 0; i < potega; i++){
    wynik *= podstawa;
}
2

Użyj do tego funkcji pow() - http://www.cplusplus.com/reference/cmath/pow/

0

użyj funkcji

std::pow(liczba, potęga);
0
if(potega >= 2) liczba = liczba * liczba;

tu jest błąd

0

już testuje wasze odpowiedzi, obecnie sam się uczę języka, nie znałem tej funkcji pow.

Już działa za pomocą funkcji pow, a jak poprawić mój program aby dobrze działał ?

3

Namieszam ci w głowie:

int potega(int a, int n) {
    int r = 1;
    while(1) {
          if ((n&1)==1) 
              r *= a;
          n >>=1;
          if (n==0)
               break;
          a *=a;
    }
    return r;
}
0
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    cout << "PROGRAM LICZACY LICZBY RZECZYWISTE DO N POTEGI\n\n";
 
    int liczba,potega;
 
    cout << "Podaj liczbe : ";
    cin >> liczba;
 
    cout << "Podaj potege : ";
    cin >> potega;
 
    int wynik = 1;
	
	for(int i = 0; i < potega; i++)
	{

		 wynik *= potega;
	
	}
    cout << wynik << endl;
 
    system("pause");
} 
0

jakoś nie mogę dojść jak ten program ręcznej roboty oblicza liczbę do 0 potęgi.

jak mam liczbę np. 2 to wg tego programy wynik= wynik * liczba czyli wynik = 1 * 2 = 2, więc czemu wychodzi 1?

Wiem, że program działa prawidłowo, ale nie rozumiem do końca tego

0

Może zobacz ten artykuł. Szybkie Potęgowanie

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