calculadora para el metodo de simpson
#include
#include
#include
#include
#include
#include
#include
#include
#define tamano 50
# define N
100
# define error
-99
#define aceptacion 110
#define FDC '\0'
/* clases que seran las pilas necesarias para la transformacion a forma
polaca y la cola que contendra la forma polaca */
class Pila_val
{
private:
double *valores;
int tope;public:
Pila_val(int n){ valores = (double*)calloc(n,sizeof(double));
tope = -1;}
~Pila_val(){ free(valores);}
void push(double val)
{ valores[++tope] = val;}
double pop()
{ return valores[tope--];}
int vacia()
{return tope == -1;}
void clean()
{ tope = -1;}
};
struct pila_cola {
char token[30]; // Tendra el operando de la formula o el numero
int prioridad; // tendra la prioridaddel operando
char tipo[10]; // sera el tipo: unario o binario
};
class Pila_opers
{
private:
pila_cola *opers;
int tope;
public:
Pila_opers(int n){ opers = (struct pila_cola*)calloc(n,sizeof(pila_cola));
tope = -1;}
~Pila_opers(){ free(opers);}
void push(struct pila_cola val)
{ opers[++tope] = val;}
struct pila_cola pop()
{return opers[tope--];}
struct pila_cola cima(){return opers[tope];}
int vacia()
{
return tope == -1; }
void clean()
{ tope = -1; }
};
// La clase Cola contendra la forma polaca, y la formula ya separada ademas de colas
// auxiliares de la grafica , la integral y la de newton.
class Cola
{
private:
pila_cola *oper;
public:
int frente,fin;
Cola(int n){ oper = (struct pila_cola*)calloc(n,sizeof(struct pila_cola));
frente =0; fin = 0;}
~Cola(){ free(oper);}
void meter(char *opera,char *prioridad,char *tipo)
{
strcpy(oper[fin].token,opera);
oper[fin].prioridad = atoi(prioridad);
strcpy(oper[fin++].tipo,tipo);
}
void meter(struct pila_cola operad)
{oper[fin++] = operad;}
struct pila_cola sacar()
{ return oper[frente++];}
void back()
{ frente = 0;}
int vacia()
{ return frente == fin;}
void clean()
{frente = fin = 0x00;}
};
typedef Cola
*COLA;
typedef Pila_val
*Pila_Val;
typedef Pila_opers
enum entradas{
punto, //0
signos, //1
digito, //2
*Pila_Opers;
opers, //3
fact, //4
a,
//5
c,
//6
e,
//7
f,
//8
g,
//9
i,
//10
l,
//11
n,
//12
o,
//13
p,
//14
r,
//15
s,
//16
t,
//17
w,
//18
x,//19
z,
//20
coma, //21
apertura,//22
cierre, //23
fdc,
//24
otro, //25
};
// estas banderas se utilizaran solo para las funciones trigonometricas
int esIntegral = 0,esNewton = 0,Variable_x = 0;
int esGrafica = 0, radianes = 1, grados = 0; // radianes por default
// la bandera esGrafica indicara que si se utiliza el comando 'grafica('
// y se estan utilizandofunciones trigonometricas, aumente el zoom
// multiplicado por 100, dado que estas funciones sus valores oscilan
// entre 1 y 0; y el zoom por default es el mismo que la pantalla
// una coordenadoa por pixel de la pantalla.
int errorc = 0,puntos = 0;
char form[100];
char *tokens [][50] =
{
// lenguaje para introducir las formulas
","
"ans"
, "-1" , "util",
, "-1" , "util",
"pi"
,"-1" , "util",
"x"
, "-1" , "util", // variable x para calcular
"integral(" , "-1" , "util",
"newton(" , "-1" , "util",
"grafica(" , "-1" , "util",
"("
, "-1" , "util",
")"
, "-1" , "util",
"ñ"
,
"^"
"ý"
,
, "6"
"5"
, "unario",
"5" , "binario",
/* signo menos [Alt-241] */
/* potencia [Alt-94] */
, "unariopos", /* cuadrado [Alt-252] */
//unariopos; tiene mayor priorodad que le unario normal
"!"
,
"6"
, "unariopos",
"©"
,
"4"
, "binario",
"ln"
,
"4"
, "unario",
"log"
,
"e"
"4" , "unario",
,
"4"
// unario antes del numero
/* logaritmo base 10 */
, "unario",
"sen"
, "4" , "unario",
"cos"
,
"4"
, "unario",
"tan"
,
"4"
, "unario",
"asen"
,
"4"...
Regístrate para leer el documento completo.