- #1
Jamin2112
- 986
- 12
My compiler doesn't like something about my enumerator declaration. Maybe something else too. I'm trying to figure it out.
Code:
Errors:
Error 1 error C2065: 'NONE' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 88 1 CalculusTool
Error 2 error C2065: 'ADDITION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 109 1 CalculusTool
Error 3 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 109 1 CalculusTool
Error 4 error C2065: 'SUBTRACTION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 113 1 CalculusTool
Error 5 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 113 1 CalculusTool
Error 6 error C2065: 'MULTIPLICATION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 117 1 CalculusTool
Error 7 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 117 1 CalculusTool
Error 8 error C2065: 'DIVISION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 121 1 CalculusTool
Error 9 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 121 1 CalculusTool
Error 10 error C2065: 'COMPOSITION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 125 1 CalculusTool
Error 11 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 125 1 CalculusTool
Warning 12 warning C4065: switch statement contains 'default' but no 'case' labels c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 131 1 CalculusTool
13 IntelliSense: identifier "NONE" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 88 28 CalculusTool
14 IntelliSense: identifier "ADDITION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 109 8 CalculusTool
15 IntelliSense: identifier "SUBTRACTION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 113 8 CalculusTool
16 IntelliSense: identifier "MULTIPLICATION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 117 8 CalculusTool
17 IntelliSense: identifier "DIVISION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 121 8 CalculusTool
18 IntelliSense: identifier "COMPOSITION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 125 8 CalculusTool
Code:
Code:
#include <string>
namespace CalcWizConsts
{
char varChars[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
size_t varCharsLen = sizeof(varChars) / sizeof(const char);
enum eqOps { ADDITION, SUBTRACTION, MULTIPLICATION, DIVISION, COMPOSITION, NONE };
}
class CalculusWizard
{
private:
bool isVariable(const char &);
void simplifyEquation(std::string &);
std::string composeFunction(const std::string &, const char &, const std::string &);
public:
CalculusWizard();
~CalculusWizard();
std::string derivative(std::string, const char &, unsigned);
};
bool CalculusWizard::isVariable(const char & c)
{
char * thisptr = CalcWizConsts::varChars;
char * offend = CalcWizConsts::varChars + CalcWizConsts::varCharsLen;
while (thisptr != offend)
if (*thisptr++ == c)
return true;
return false;
/*
Alternatively, return c >= 'a' && c <= 'z'
*/
}
void CalculusWizard::simplifyEquation(std::string & eq)
{
// ... Simplify equation, e.g. "(x^2)*(x^6)" --> "x^8"
}
std::string CalculusWizard::composeFunction(const std::string & fx, const char & x, const std::string & gx)
{
/* Return fx compose gx, i.e. return a string that is gx with every instance of the character x replaced
by the equation gx.
E.g. fx="x^2", x="x", gx="sin(x)" ---> composeFunction(fx, x, gx) = "(sin(x))^2"
*/
std::string hx("");
// ...
return hx;
}
CalculusWizard::CalculusWizard()
{
;
}
CalculusWizard::~CalculusWizard()
{
;
}
/*
Returns the n-th derivative of f with respect to x
*/
std::string CalculusWizard::derivative(std::string fx, const char & x, unsigned n = 1)
{
if (n == 0)
{
return fx;
}
else if (n > 1)
{
while (n-- > 1)
fx = derivative(fx, x);
}
// If here, find and return the derivative of f ...
std::string gx(""), hx("");
CalcWizConsts::eqOps op = NONE;
/*
Partition fx as
fx = gx op gx
where op is either addition, subtraction, multiplication, division or composition.
Return derivative fpx according to rules of calculus.
*/
// ...
if (fx.size() == 0)
{
throw ("ERROR: Attempted to find derivative of empty function.");
// Need to create different type of error
}
// ...
std::string fpx("");
switch (op)
{
case ADDITION:
// Sum Rule: f'x = g'x + h'x
return fpx = derivative(gx, x) + "+" + derivative(hx, x);
break;
case SUBTRACTION:
// Difference Rule: f'x = g'x - h'x
return fpx = derivative(gx, x) + "-" + derivative(hx, x);
break;
case MULTIPLICATION:
// Product Rule: f'x = gx * h'x + hx * g'x
return fpx = gx + "*" + derivative(hx, x) + "+" + hx + "*" + derivative(gx, x);
break;
case DIVISION:
// Quotient Rule: f'x = (g'x * hx - gx * h'x) / [(hx)^2]
return fpx = "(" + derivative(gx, x) + "*" + hx + "-" + gx + "*" + derivative(hx, x) + ")/[(" + hx + ")^2]";
break;
case COMPOSITION:
// Chain Rule: f'x = f'(gx) * g'x
return fpx = derivative(composeFunction(gx, x, hx), x) + "*" + derivative(hx, x);
break;
default:
break; // Continue on
}
// ...
simplifyEquation(fpx);
return fpx;
}
Errors:
Error 1 error C2065: 'NONE' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 88 1 CalculusTool
Error 2 error C2065: 'ADDITION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 109 1 CalculusTool
Error 3 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 109 1 CalculusTool
Error 4 error C2065: 'SUBTRACTION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 113 1 CalculusTool
Error 5 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 113 1 CalculusTool
Error 6 error C2065: 'MULTIPLICATION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 117 1 CalculusTool
Error 7 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 117 1 CalculusTool
Error 8 error C2065: 'DIVISION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 121 1 CalculusTool
Error 9 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 121 1 CalculusTool
Error 10 error C2065: 'COMPOSITION' : undeclared identifier c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 125 1 CalculusTool
Error 11 error C2051: case expression not constant c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 125 1 CalculusTool
Warning 12 warning C4065: switch statement contains 'default' but no 'case' labels c:\users\me\documents\visual studio 2013\projects\calculustool\calculustool\calculuswizard.cpp 131 1 CalculusTool
13 IntelliSense: identifier "NONE" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 88 28 CalculusTool
14 IntelliSense: identifier "ADDITION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 109 8 CalculusTool
15 IntelliSense: identifier "SUBTRACTION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 113 8 CalculusTool
16 IntelliSense: identifier "MULTIPLICATION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 117 8 CalculusTool
17 IntelliSense: identifier "DIVISION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 121 8 CalculusTool
18 IntelliSense: identifier "COMPOSITION" is undefined c:\Users\me\Documents\Visual Studio 2013\Projects\CalculusTool\CalculusTool\CalculusWizard.cpp 125 8 CalculusTool