Как прочитать состояние «корпуса переключателя» снаружи в следующей функции?
Я пытаюсь понять, как читать состояние переключателя в функции 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';
}
}