Переменные не объявлены в области ошибки / слишком мало аргументов для работы - PullRequest
0 голосов
/ 02 июля 2018

Я пишу простой код, который берет число и мощность, основанную на вводе пользователем, и возводит число в эту степень, используя функции. Однако при попытке скомпилировать код я получаю несколько ошибок. вот код:

#include <iostream>
using namespace std;

double power(double& n1, sq)
{
    for (int i = 0; i < sq; i++) {
        n1* n1;
    }
    return n1;
}

int main()
{
    double power(double&);
    double num1, square;
    cout << "Enter a number IMMEDIATLY: ";
    cin >> num1;
    cout << "\nEnter a power: ";
    cin >> square;
    power();
    cout << num1 << endl;
    return 0;
}

Вот ошибки, которые я получаю:

||=== Build: Debug in practice (compiler: GNU GCC Compiler) ===|
|5|error: 'sq' has not been declared|
In function 'double power(double&, int)':|
|6|error: 'sq' was not declared in this scope|
|7|warning: statement has no effect [-Wunused-value]|
In function 'int main()':|
|22|error: too few arguments to function 'double power(double&)'|
|15|note: declared here|
|17|warning: unused variable 'ans' [-Wunused-variable]|
||=== Build failed: 3 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|

Буду очень признателен за любую помощь или облегчение относительно того, как исправить эти ошибки, потому что я довольно долго был в тупике. Спасибо!

edit: так что я разобрал square как int и инициализировал переменные в power () (как вы, ребята, сказали), но теперь код выдает неправильный ответ в качестве результата (все, что больше квадрата числа, приводит к неправильному выводу ).

#include <iostream>

using namespace std;

double power(double& n1, int& sq) {
for (int i=2; i<=sq; i++) {
        n1*=n1;
}
return n1;

}

int main()
{
double power(double& n1, int& sq);
double num1;
int square;
cout << "Enter a number IMMEDIATLY: ";
cin >> num1;
cout << "\nEnter a power: ";
cin >> square;
 power(num1, square);
cout << num1 << endl;
return 0;
}

1 Ответ

0 голосов
/ 03 июля 2018

Чтобы ответить на второй вопрос, просто проследите код с примером:

Допустим, входные данные

n1 = 3
sq = 3

Мы знаем, что 3^3 = 27, поэтому давайте посмотрим, получим ли мы этот ответ.

Сначала операция n1 *= n1 умножает n1 на себя. Для одного квадрата это хорошо: 3*3 = 9. Но затем вы снова просматриваете его, и n1 теперь равно 9, поэтому код будет вычислять 9*9 = 81.

Посмотри, сможешь ли ты понять это отсюда. Подсказка: вам понадобится другая переменная для хранения.

Кроме того, ваш оператор return находится за пределами скобок для функции power(). Хотя он работает сам по себе, потому что вы передали &n1 в качестве ссылки. Либо удалите оператор return полностью, либо создайте новую переменную в main, которая получает значение от power (). Если вы сделаете последнее, удалите символ & и поместите оператор возврата в скобки. Чтобы лучше понять передачу по ссылке или передачу по значению, см. эту ссылку . Удачи!

...