Написание функций, которые возвращают значение в C ++ - PullRequest
0 голосов
/ 08 октября 2018

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

Calculator.cpp: В функции 'int main ()':

Calculator.cpp: 30: 10: предупреждение: «результат» может использоваться неинициализированным в этой функции [-Wmaybe-uninitialized]

result = sum (numberOne, numberTwo, result);

Это мой текущий код на C ++

// Calculator.cpp - This program performs arithmetic, ( +. -, *. / ) on two numbers.
// Input:  Interactive
// Output:  Result of arithmetic operation

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

// Write performOperation() function declaration here
double sum(double numberOne, double numberTwo, double result);
double difference(double numberOne, double numberTwo, double result);
double product(double numberOne, double numberTwo, double result);
double quotient(double numberOne, double numberTwo, double result);

int main()
{
   double numberOne, numberTwo;
   string operation;
   double result;

   cout << "Enter the first number: ";
   cin >> numberOne;
   cout << "Enter the second number: ";
   cin >> numberTwo;
   cout << "Enter an operator (+.-.*,/): ";
   cin >> operation;

   // Call performOperation method here
   if (operation == "+")
       result = sum(numberOne, numberTwo, result);
   else if (operation == "-")
       result = difference(numberOne, numberTwo, result);
   else if (operation == "*")
       result = product(numberOne, numberTwo, result);
   else if (operation == "/")
       result = quotient(numberOne, numberTwo, result);
   else
       cout << "Please enter a valid operator." << endl;

   if (operation == "+" || operation == "-" || operation == "*" || operation == "/")

   {
       cout << numberOne;
       cout << " " << operation << " ";
       cout << numberTwo;
       cout << " = ";
       cout << result << endl;
   }

   return 0;

} // End of main() function

// Write perform Operation function here

double sum(double numberOne, double numberTwo, double result)
{
   result = numberOne + numberTwo;
   return result;
}

double difference(double numberOne, double numberTwo, double result)
{
   result = numberOne - numberTwo;
   return result;
}

double product(double numberOne, double numberTwo, double result)
{
   result = numberOne * numberTwo;
   return result;
}

double quotient(double numberOne, double numberTwo, double result)
{
   result = numberOne / numberTwo;
   return result;
}

Я попытался инициализировать результат в 0.0, но ошибка возникает.Мы используем эту функцию обучения по заему, и она показывает только 80% завершенности.

double result=0.0;

1 Ответ

0 голосов
/ 08 октября 2018

Проблема связана с вашим третьим аргументом для каждой из ваших функций:

double sum(double numberOne, double numberTwo, double result);
                                               ^^^^^^^^^^^^^

Вам не нужно передавать result в вашей функции, потому что вы 'Я буду возвращать результат в операторе return.Удалите третий аргумент, настройте все ваши вызовы функций, и вы избежите этого предупреждения.

Причина, по которой вы получаете это предупреждение, заключается в том, что компилятор видит вызов sum() или что-то еще, видит, что выВы передаете значение result, но result неинициализировано.Поскольку вам вообще не нужно его передавать, удаление этого параметра решает эту проблему.

...