.
Te dejo mi calculadora que hice en la Univ. para mi profesor de Métodos Numéricos, resuelve expresiones complejas como:
+-+-4(5h^sqr(e(ln(4(5/10)))^sqr(2*2)))(cos(h)^2+sin(h)^2)
* Identifica automáticamente las variables.
* Maneja Variables (lo deje para usa sola variable)... en si se pueden usar N Variables y resolver sus valores.
Arrojando el resultado correcto.
SourceCode. ( Deje el ejecutable Funcional dentro de la carpeta Bin/Release ).
Dulces Lunas!¡.
Te dejo mi calculadora que hice en la Univ. para mi profesor de Métodos Numéricos, resuelve expresiones complejas como:
+-+-4(5h^sqr(e(ln(4(5/10)))^sqr(2*2)))(cos(h)^2+sin(h)^2)
* Identifica automáticamente las variables.
* Maneja Variables (lo deje para usa sola variable)... en si se pueden usar N Variables y resolver sus valores.
Arrojando el resultado correcto.
SourceCode. ( Deje el ejecutable Funcional dentro de la carpeta Bin/Release ).
Código (cpp) [Seleccionar]
int main() {
equation oEquation;
//equation oGrado; Clase por si el grado es de alguna manera no procesable como cos(x) o cos(x)^2+sin(x)^2
string str;
int iOption = 0, iDivs = 0, iFlags, iOrden = 0;
int iPresicion = 5;
bool bNewEquation = false;
long double ldH = 0.0f, ldArea = 0.0, ldRange[2] = {};
do {
system("cls");
cout << endl << "Programa Creado por: Ortega Avila Miguel Angel 4B (Vespertino)." << endl << endl;
cout << "Sintaxis------" << endl;
cout << "Multiplicacion Divicion suma y resta" << endl << "\ta*b, a/b, a+b, a-b, -a, +b";
cout << "Trigonometricas:" << endl << "\tcos(x), sin(x), tan(x), csc(x), cot(x), sec(x)" << endl;
cout << "Valor absoluto:" << endl << "\tabs(x)" << endl;
cout << "Exponencial logaritmo natural:" << endl << "\te(x), ln(x)" << endl;
cout << "Potencias y raiz cuadrada:" << endl << "\tx^y, sqr(x)" << endl;
cout << "--------------" << endl;
cout << "Nota: Se permite el uso de cuarquier variable (el programa la identifica automaticamente)." << endl;
cout << "Ejemplo: 4(5h^sqr(e(ln(4(5/10)))^sqr(2*2)))(cos(h)^2+sin(h)^2)" << endl << endl << endl;
cout.precision(2);
cout.setf(ios::fixed, ios::floatfield);
while (1) {
if (tolower(str[0]) != 'r') {
cout << "Ingrese una ecuacion: ";
getline(cin, str);
//str = "4(5h^sqr(e(ln(4(5/10)))^sqr(2*2)))(cos(h)^2+sin(h)^2)";
oEquation.Equation(str);
if ((oEquation.GetFlags() & FLAG_SINTAX)) {
cout << "\tError: Sintaxis de la ecuacion errorea No se permiten dos operados contiguos (inclusive signos)." << endl << endl;
} else if ((oEquation.GetFlags() & FLAG_INVALIDTYPE)) {
cout << "\tError: Caracteres no procesables." << endl << endl;
} else if (oEquation.Variables.size() > 1) { // Hay mas de una variable?.
cout << "Error: Ingresa una ecuacion con una sola variable." << endl << endl;
} else {
break; // while(1)
}
} else {
cout << "Ecuacion: " << oEquation.Equation() << endl << endl;
break;
}
}
system("cls");
bNewEquation = false;
while(!bNewEquation) {
cout << "Programa Creado por: Ortega Avila Miguel Angel 4B (Vespertino)." << endl << endl;
cout << "Leyenda (Posibles resultados):" << endl;
cout << "nan. = Imposible de calcular (Resulta por ejemplo de raices imaginarias)." << endl;
cout << "inf. = Numero Infinito (por ejemplo: Una divicion entre 0)." << endl << endl;
cout << "Ecuacion: " << oEquation.Equation() << endl << endl;
cout << "[0] Resolver Operacion."<< endl;
cout << "[1] Calcular derivada."<< endl;
cout << "[2] Calcular area bajo la curva (Integracion por trapecios)."<< endl;
cout << "[3] Ingresar otra ecuacion."<< endl;
cout << "[4] Definir la presicion (cantidad de dcimales a mostrar)." << endl;
cout << "[5] Terminar aplicacion." << endl << endl;
cout << "Opcion: ";
if (!getInt(&iOption, true)) {
cout << "Error: Solo Numeros Decimales." << endl << endl;
} else {
cout << endl;
switch (iOption) {
...
...
Es un código un tanto largo...
...
Dulces Lunas!¡.