#include #include using namespace std; class Funcion { public: virtual float Evaluar(float) const =0; virtual void Mostrar() const=0; }; class Recta:public Funcion { private: float A, B; // y=Ax+B public: Recta(float a, float b):A(a), B(b) {} void Mostrar() const { cout << "y = " << A << "*x + " << B; } float Evaluar(float x) const { return A*x+B;} }; class Exponencial:public Funcion { private: float A, B, C; // y = Ae^Bx + C public: Exponencial(float a, float b, float c):A(a), B(b), C(c) {} void Mostrar() const { cout << "y = " << A << "*e^(" << B << "*x) + "<< C; } float Evaluar(float x) const { return A*exp(B*x)+C;} }; class Parabola:public Funcion { private: float A, B; // y = Ax^2+B public: Parabola(float a, float b):A(a), B(b) {} void Mostrar() const { cout << "y = " << A << "*x^2 + " << B; } float Evaluar(float x) const { return A*x*x+B; } }; class ListaFunciones { class Nodo { public: Funcion * info; Nodo * sig; Nodo(Funcion * c, Nodo * s=NULL):info(c), sig(s) {} }; Nodo * lista; public: ListaFunciones() {lista=NULL;} ~ListaFunciones(); void InsertarRecta(const Recta &); void InsertarExponencial(const Exponencial &); void InsertarParabola(const Parabola &); void Mostrar() const; float MenorY(float) const; };