Переписать базовую программу так, чтобы вместо глобальных переменных она использовала аргументы и параметры - PullRequest
0 голосов
/ 26 ноября 2018

Я переставил его так, чтобы он соответствовал требованию, однако, когда я запускаю код, он возвращает «неопределенную ссылку на« Power (int, int, int) »). Я свел его к одной строке, но я не знаю, какчтобы решить ее. Сравнивая ее с аналогичными примерами, которые я сделал, похоже, все в порядке. Я считаю, что проблема заключается в том, что он не передает «return» обратно на главную.

#include <iostream>

int Power( /* in */ int pow, /* in */ int x, /* out */ int &result);    //prototype

using namespace std;

int main()
{
    int pow;
    int x;
    int result;

    cout << "Enter power: ";    //prompt for integer in for power to be raised by
    cin >> pow;                 //integer in
    cout << "Enter value to be raised to power: ";      //prompt for integer to be raised
    cin >> x;                   //integer in
    cout << Power(pow, x, result);      /*function results output.  returns input of Power function***
                                           This line is the problem but why...
                                           If I remove "(pow,x,result)" it will compile but it does not calculate properly.
                                           If I take the while loop from the Power function by itself it calculates fine.
                                           If I replace Power ((pow,x,result) with 'result' it makes a really big number...
                                         */

    return 0;                   //return
}

int Power( /*in */ int pow, /*in */ int x, /*out */ int result);        //Power function     should calculate the result of raising 'x' to the 'pow' entered...
{
    result = 1;                 //result is set at 1     by default
    while (pow > 0)             //while loop with pow set     to greater than 0
    {
        result = result * x;    //calculation for raising x by pow
        pow--;
    }
    return result;              //returning while loop results to function
}

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Почему вы передаете адрес результата?Я бы предложил вам удалить переменную результата из аргументов функции и переменную в основной области видимости, это бы исправило это.

int power(int pow,int x);
int main(){
    int pow,x;
    // Get the pow and number and the index, you wrote it

    cout << "Enter power: "; //prompt for integer in for power to be raised by 
    cin >> pow; //integer in 
    cout << "Enter value to be raised to power: "; 
    cin >> x;
    cout << Power(pow,x);
// If you want to store the result do
    int result = Power(pow,x);
}
int Power(int pow,int x){
   int result = 1; //result is set at 1 by default , you want to declare result here
while(pow > 0){
    result = result * x; 
    pow--; } 
return result;  }

Проблема в том, что у вас есть определение, которое говорит int &result, ноВы объявляете это как int result.Приведенный выше код решает вашу проблему и избавляет вас от необходимости определять результат переменной и передавать его в Power

0 голосов
/ 26 ноября 2018

Объявление

int Power(/* in */int pow,/* in */int x,/* out */int &result);

Не соответствует определению

int Power(/*in*/int pow,/*in*/int x,/*out*/int result);

Кроме того, определение имеет ; в конце, которого не должно быть.Вы можете попробовать изменить его на:

int Power(/*in*/int pow,/*in*/int x,/*out*/int& result)

Но я предлагаю вам использовать std::pow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...