2014-03-02 32 views
-5

我是C++中的新手,我正在編寫一個C++程序,要求用戶輸入兩個整數,然後它將第一個整數提升到由第二個整數。例如,如果用戶輸入5和8,則結果將是5下標8,即,第五個將被提升到第八個功率。該程序不能使用任何預定義的C++函數(如pow函數)來執行此任務。如果用戶願意,該程序應該允許用戶執行另一種計算。任何人都可以幫助C++程序的權力,但沒有使用pow函數

+9

你有什麼試過?也許你可以創建一個將自身乘以5次的循環8次。 – nos

+2

哦,我不得不下拉到彙編器,如果你不能使用預定義的C++函數,那麼你需要處理所有的東西! –

+0

'main'算作「預定義函數」嗎? – bolov

回答

2

程序不得使用任何預先定義的C++函數(如POW函數)完成這個任務

你可以使用一些片C++代碼等如下,以計算X ÿ,而不使用任何預定義的功能:

int x = 5; 
int y = 3; 
int result = 1; 
for(int i = 0; i < y; ++i) 
{ 
    result *= x; 
} 

cout << result << endl; 

輸出:

125 

查看樣機here

4

我不會給你任何代碼,因爲這不會讓你真正探索這個概念。相反,你應該使用這個僞代碼來實現你自己的東西。

創建一個接受兩個輸入的函數,即基數和指數。

現在有幾種方法可以做到這一點。您可以使用高效的位移,但讓我們從簡單的開始,我們可以嗎?

answer = base 
i = 1 
while i is less than or equal to exponent 
    answer = answer * base 
return answer 

只需循環乘以自己的基地。

還有其他方式關注效率。看這裏,看的東西,你可能想嘗試:are 2^n exponent calculations really less efficient than bit-shifts?