2013-04-02 4 views
0

Я должен написать основной() процедуру, чтобы проверить результаты следующих тестов:Функциональные полномочия

мощность (8, 2)

мощности (3, 3)

мощность (2, 10)

Используйте cout для отображения вычисленных значений на экране. Это то, что я сделал до сих пор, но он не работает для меня

#include <iostream> 
#include <cmath> 

using namespace std; 

int pwr (int&, int); 

int main() 
{ 
int m, n; 
cout << "Enter two positive integers;"; 
cin >> m >> n; 
cout << endl << "The power is " << pwr(m,n) << endl; 
return 0; 
} 

int power (int m, int n) 
{ 
if (n<=1) 
    return m; 
else 
    return m * power (m, n-1); 
} 
+1

Не работают средства абсолютно ничего. – chris

+2

'int pwr (int &, int)' объявлен, но не определен. 'int power (int m, int n)' определяется, но никогда не используется. – Mankarse

+0

Mankarse и Song Wang оба дали вам свой ответ. Я предполагаю, что это для домашней работы. Попробуйте ввести символ вместо числа и посмотрите на результат. – XanderLynn

ответ

0
  1. Нет необходимости включать cmath
  2. объявление функции и несоответствие int pwr (int&, int) определения против int power (int m, int n) (несовпадение имен и несоответствие аргументов)
  3. рекурсивной функции вызова return m * power (m, n-1) должен быть правильным либо pwr или power.
  4. Используйте некоторые значащие имена функций и имена переменных.
  5. Используйте отступ и скобки, чтобы ваш код был чистым.

#include <iostream> 

using namespace std; 
int getPower(int, int); 

int main() 
{ 
    int value, power; 
    cout << "Enter two positive integers;"; 
    cin >> value >> power; 
    cout << "The power is " << getPower(value,power) << endl; 
    return 0; 
} 

int getPower (int value, int power) 
{ 
    if (power<=1){ 
     return value; 
    } 
    else{ 
     return value * getPower (value, power-1); 
    } 
} 
2

должен быть int power (int m, int n)int pwr (int&, int);?

Возможно, код должен быть таким?

#include <iostream> 
#include <cmath> 

using namespace std; 

int pwr (int, int); 

int main() 
{ 
int m, n; 
cout << "Enter two positive integers;"; 
cin >> m >> n; 
cout << endl << "The power is " << pwr(m,n) << endl; 
return 0; 
} 

int pwr (int m, int n) 
{ 
if (n<=1) 
    return m; 
else 
    return m * pwr (m, n-1); 
} 
+0

Если U использует C++ 11 (Visual Studio 2015 или новее), возможно, вы можете произвести впечатление на своего учителя с помощью constexpr или даже шаблонов. Посмотрите здесь альтернативный способ делать то, что вы намерены ... Также, пожалуйста, попробуйте STFG, прежде чем задавать вопрос. Не засорение пространства имен с помощью общих титров вопросов будет большой помощью для других в долгосрочной перспективе. ;-) – Kupto

2

Вы объявляете вашу функцию

int pwr (int&, int); 

но вы определяете его как

int power (int m, int n) 

Так что компилятор не может найти функцию pwr внутри main.

Измените определение функции на следующее:

int pwr(int m, int n) 
{ 
    if (n<=1) 
     return m; 
    else 
     return m * pwr (m, n-1); 
} 

Поскольку вы имеете дело с int с, вам не нужно пройти по ссылке.

Смежные вопросы