Question: DEBUG, I've been given the following code by a Chegg Expert: #include #include #include #include #include using namespace std; class token { public: double num1,num2;
DEBUG, I've been given the following code by a Chegg Expert:
#include
#include
#include
#include
#include
using namespace std;
class token
{
public:
double num1,num2;
char op;
token(double a, char b, double c) : num1(a),op(b),num2(c){};
token() : num1(0),op(0),num2(0){};
void initialize(double a, char b, double c) {
num1 = a;
op = b;
num2 = c;
return;
}
double solve()
{
switch(op)
{
case '+' : return (num1+num2);
case '-' : return (num1-num2);
case '*' : return (num1*num2);
case '/' : return (num1um2);
case '^' : return (pow(num1,num2));
case 'r' : return (pow(num2,1um1));
}
}
};
string expression;
deque
deque
void express()
{
cout
cout
cin >> expression;
return;
}
void extract() //Turns an expression into a list of numbers and operators.
{
vector
unsigned int i,k; int temp=0;
for (i=0; i
{
if (expression[i]>='0' && expression[i]
digits.push_back(expression[i]-'0');
else {
if(((expression[i]>='a' && expression[i]='A' && expression[i]
cout
double val;
cin>>val;
digits.push_back(val);
}
else{
operators.push_back(expression[i]);
for (k=0; k temp+=digits.at(k)*pow(10,(digits.size()-1-k)); numbers.push_back(temp); digits.clear(); temp=0; } } } operators.erase(operators.end()); return; } void addsub() //Does adding and subtracting. { token tempp; double temp = numbers.at(0); while (true) { if (operators.at(0) == '+' || operators.at(0) == '-') { numbers.erase(numbers.begin()); tempp.initialize(temp ,operators.at(0), numbers.at(0)); temp = tempp.solve(); if (operators.size() == 1) { operators.clear(); numbers.at(0) = temp; return; } else operators.erase(operators.begin()); } } } void multidiv() //Does multiplication and division. { token tempp; double temp; unsigned int i; for (i=0; i { if (operators.at(i) == '*' || operators.at(i) == '/') { tempp.initialize(numbers.at(i) ,operators.at(i), numbers.at(i+1)); temp = tempp.solve(); if (operators.size() == 1) { operators.clear(); numbers.at(0) = temp; return; } else { operators.erase(operators.begin()+i); numbers.erase(numbers.begin()+i+1); numbers.at(i) = temp; } --i; } } addsub(); } void calculate() //Does powers and roots. { token tempp; double temp; unsigned int i; for (i=0; i { if (operators.at(i) == '^' || operators.at(i) == 'r') { tempp.initialize(numbers.at(i) ,operators.at(i), numbers.at(i+1)); temp = tempp.solve(); if (operators.size() == 1) { operators.clear(); numbers.at(0) = temp; return; } else { operators.erase(operators.begin()+i); numbers.erase(numbers.begin()+i+1); numbers.at(i) = temp; } --i; } } multidiv(); } int main () { express(); extract(); calculate(); cout return 0; } Unfortunately, if you were to run this on its own in Microsoft Visual Studio Code 2019 I would get the following message: Debug Assertion Failed Program: C:\...\14.29.3133\include\deque Expression cannot increment deque iterator past end Hitting "Retry" Led me to this line in this deque file in line 281: I'm geninuly stumped on where to go, and was told there was no errors, could you verify in running the following code above in Visual studio code? Thank you
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
