elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Leer y operar bisección con una función
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Leer y operar bisección con una función  (Leído 3,102 veces)
Antoniio

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Leer y operar bisección con una función
« en: 7 Septiembre 2015, 08:49 am »

Hola, tengo un programa de bisección en c++ pero lee dos variables (a y b), alguien sabe cómo hacer para que realice las operaciones dada una función del usuario?

este es el code:
Código:
#include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

double f(double x);
double biseccion ( double a, double b, double tol, int n);
int main()
{
    double a, b, tol, raiz;
    int n;
    cout<< "Ingrese el n\xA3mero de iteraciones:  ";
    cin>>n;
    cout << "Ingrese a:  ";
    cin>>a;
    cout<< "Ingrese b:  ";
    cin>>b;
    cout<< "Ingrese la tolerancia:  ";
    cin>>tol;
    raiz=biseccion(a,b,tol,n);
    cout<<"La ra\xA1z es: "<< raiz <<endl;
    system("pause");
    return 0;
}
 
 double f(double x)
 {
        return x*x*x+4*x*x-10;
 }
 double biseccion(double a, double b, double tol, int n)
 {
        double c;
        int nolter=0;
        do
        {
            c=(a+b)/2;
            if(f(a)*f(c)<0)
            {
               b=c;
            }
            else
            {
               a=c;
            }
            cout<<nolter<<"\t"<<a<<"\t"<<b<<"\t"<<c<<"\t"<<f(c)<<endl;
            nolter++;
         }
         while((fabs(f(c))>tol)&&(nolter<n));
         return c;
 }

gracias de antemano.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Leer y operar bisección con una función
« Respuesta #1 en: 7 Septiembre 2015, 14:06 pm »

Citar
sabe cómo hacer para que realice las operaciones dada una función del usuario?
Si lo que quieres es que el usuario te ponga una función, la única posibilidad que te queda en C++ es interpretar y transformar la cadena de entrada, pero es algo más complicado.

En C++, en vez de <math.h>, <cmath>.


En línea

Antoniio

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Leer y operar bisección con una función
« Respuesta #2 en: 7 Septiembre 2015, 17:15 pm »

Sí, sin duda es más complicado, no supe hacerlo por eso vengo a ver si alguien me puede hechar una mano para explicarme más o menos cómo hacer todo ese proceso, gracias :3
En línea

someRandomCode

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: Leer y operar bisección con una función
« Respuesta #3 en: 8 Septiembre 2015, 16:32 pm »

Vos te referis a esta biseccion? click aca

O sea, a buscar raices por aproximacion?
En línea

Antoniio

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Leer y operar bisección con una función
« Respuesta #4 en: 8 Septiembre 2015, 19:43 pm »

Sí, puedo llegar a la raíz con el código pero no se cómo hacer para que el usuario ingrese la función y con ella realizar las operaciones, no con a y b como lo tengo...
En línea

someRandomCode

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: Leer y operar bisección con una función
« Respuesta #5 en: 8 Septiembre 2015, 21:15 pm »

a y b son puntos continuos en la recta?
Porque la idea es que hay varios criterios a cumplir para que puedas usar este metodo..
Basicamente igual vas a tener que cargarlo por pantalla, y en cuanto a la ecuacion tendras que hacer un parser lamentablemente..
En línea

Antoniio

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Leer y operar bisección con una función
« Respuesta #6 en: 8 Septiembre 2015, 21:27 pm »

Sí, el problema es que me piden sacar la aproximación a una raíz de una función dada, pero no se cómo implementar el código con una función dada por el usuario, sólo pidiendo los puntos a y b...no sé cómo hacer para que en lugar de pedir dos puntos pida la ecuación y realice lo mismo..
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Leer y operar bisección con una función
« Respuesta #7 en: 8 Septiembre 2015, 22:25 pm »

Como dijo someRandomCode, tendrás que parsear la ecuación. Tendrás que interpretar la cadena de caracteres, y de ahí sacar las operaciones (manteniendo prioridad en los operadores), los coeficientes, y las variables. Salvo que solo lo quieras hacer con ecuaciones que sigan un patrón (Ej. "aX^2+bX+c"), tendrás que interpretarlo con todas sus posibilidades, y eso ya te va a llevar más tiempo.


Si real, realmente quieres hacerlo ahora, te aconsejo apartarte de ese proyecto momentaneamente y ponerte con lo otro. Pensar en cómo lo harás, pensar en cómo mantendrás el orden de los paréntesis, en como cambiarás las variables por tus valores, etc.

Para ver operadores, solo es comparar los caracteres (str[ i ] == '+'), y los números los separas y conviertes a variables enteras o flotantes con el set de funciones <stof, stoi...>.

Dale tiempo a pensar el algoritmo.
En línea

Antoniio

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Leer y operar bisección con una función
« Respuesta #8 en: 9 Septiembre 2015, 01:37 am »

Sí, tal parece que es un problema que con lo que sé de c++ no podré realizar por el momento. Ahora, que pasaría si yo incluyo las funciones?, eso debe ser mucho más fácil, osea, no pedir nada al usuario, que sean supongamos 3 funciones ya establecidas y hacer las operaciones con esas. Sinceramente no se hacerlo, algún consejo para hacerlo de esa forma?, gracias de antemano.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Leer y operar bisección con una función
« Respuesta #9 en: 9 Septiembre 2015, 15:41 pm »

Crea las funciones
Código
  1. float func1(float x, float y);

Y luego las introduces como sea.
¿Qué es lo que no das hecho?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines