Как прочитать состояние «корпуса переключателя» снаружи в следующей функции?

Я пытаюсь понять, как читать состояние переключателя в функции ReSults, как показано в коде ... result Функция должна считывать switchсостояние из calculation функции и обрабатывать его.

void CalCulation()
{
    cout << "Choice: "; char UserChoice; cin>>UserChoice;
    double vAdd1, vAdd2;
    switch(UserChoice)
    {
    case '+':
        cout << " + :: Enter the first value: "; cin << vAdd1;
        cout << " + :: Enter the second value: "; cin >> vAdd2;
        ReSults(vAdd1, Vadd2);
    }
}
void ReSults(double vAdd1, double vAdd2, char UserChoice)
{
    if(UserChoice == '+')
    {
        double reSultOutputAdd = vAdd1+vAdd2;
        cout << "The result for addition: "<< reSultOutputAdd << '\n';
    }
}

Полная версия

#include <iostream>
#include <string>
#include <limits>
using namespace std;
//Calculator
void MainMenu();
void CalCulation();
void ReSults(double , double, char);
bool isValid(string err_msg)
{
    if(cin.rdstate())
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>:: max(), '\n');
        system("cls");
        MainMenu();
        return false;
    }
    return true;
}
int main()
{
    MainMenu();

    cout << "\n\n\n\n\n\n The program runs Correctly" << '\n';
    return 0;
}
void MainMenu()
{
    cout << "Main Menu" << '\n';
    cout << "Enter + for Calculation" << '\n';
    cout << "Enter - for Subtraction" << '\n';
    cout << "Enter * for Multiplication" << '\n';
    cout << "Enter / for Devision" << '\n';
    cout << "------------------------------" << '\n';
    cout << "Chose any option for the list." << '\n';
    CalCulation();
}
void CalCulation()
{
    cout << "Choice: "; char UserChoice; cin>>UserChoice;
    double vAdd1, vAdd2, vSub1, vSub2, vMul1, vMul2, vDiv1, vDiv2;
    switch(UserChoice)
    {
    case '+':do{
        cout << " + :: Enter the first value: "; cin >> vAdd1;
        cout << " + :: Enter the second value: "; cin >> vAdd2;
    }while (!isValid("You have not entered any number, try again with a correct input data."));
    ReSults(vAdd1, vAdd2, UserChoice);break;
    case '-':do{
        cout << " - :: Enter the first value: "; cin >> vSub1;
        cout << " - :: Enter the second value: "; cin >> vSub2;
    }while (!isValid("You have not entered any number, try again with a correct input data."));
    ReSults(vSub1, vSub2, UserChoice);break;
    case '*':do{
        cout << " * :: Enter the first value: "; cin >> vMul1;
        cout << " * :: Enter the second value: "; cin >> vMul2;
    }while (!isValid("You have not entered any number, try again with a correct input data."));
    ReSults(vMul1, vMul2, UserChoice);break;
    case '/':do{
        cout << " / :: Enter the first value: "; cin >> vDiv1;
        cout << " / :: Enter the second value: "; cin >> vDiv2;
    }while (!isValid("You have not entered any number, try again with a correct input data."));
    ReSults(vDiv1, vDiv2, UserChoice);break;
    default:
        cout << "Wrong Choice or Not allowed, Try again!" << '\n';
    }
}
void ReSults(double vAdd1, double vAdd2, double vSub1, double vSub2, double vMul1, double vMul2, double vDiv1, double vDiv2, char UserChoice)
{
    if(UserChoice == '+')
    {
        double reSultOutputAdd = vAdd1+vAdd2;
            cout << "The result for addition: "<< reSultOutputAdd << '\n';
    }else if(UserChoice == '-')
    {
        double reSultOutputSub = vSub1-vSub2;
            cout << "The result for addition: "<< reSultOutputSub << '\n';
    }else if(UserChoice == '+')
    {
        double reSultOutputMul = vMul1*vMul2;
            cout << "The result for addition: "<< reSultOutputMul << '\n';
    }else if(UserChoice == '+')
    {
        double reSultOutputDiv = vDiv1/vDiv2;
            cout << "The result for addition: "<< reSultOutputDiv << '\n';
    }

}

Ответы (1 шт):

Автор решения: Артём Оконечников

result Функция должна считывать switchсостояние из calculation функции и обрабатывать его

Сделать так, как у вас написано в «полной» версии? Передавать UserChoice как аргумент для ReSults?

void CalCulation();
void ReSults(double vAdd1, double vAdd2, char UserChoice);

void CalCulation()
{
    cout << "Choice: "; char UserChoice; cin>>UserChoice;
    double vAdd1, vAdd2;
    switch(UserChoice)
    {
    case '+':
        cout << " + :: Enter the first value: "; cin >> vAdd1; // В другую сторону
        cout << " + :: Enter the second value: "; cin >> vAdd2;

        ReSults(vAdd1, vAdd2, UserChoice); // Имена переменных чувствительны к регистру.
    }
}

void ReSults(double vAdd1, double vAdd2, char UserChoice)
{
    if(UserChoice == '+')
    {
        double reSultOutputAdd = vAdd1+vAdd2;
        cout << "The result for addition: "<< reSultOutputAdd << '\n';
    }
}
→ Ссылка