Delphi - evaluador de funciones

   
Vista:

evaluador de funciones

Publicado por kevin wampi66@hotmail.com (6 intervenciones) el 05/11/2013 03:08:20
hola a todos..... necesito ayuda en la codificacion en el delphi7
me urge saber cm codificar un evaluador para todo tipo de funciones no se si alguien me puede dar una mano o alguna pagina de recomendacion busque en varias paginas y no encuentro nada
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

evaluador de funciones

Publicado por kevin (6 intervenciones) el 07/11/2013 00:45:46
bueno lo q realmente necesito es:

function bisa(z:real):real;
begin
bisa:=power(z,3)-2*sin(z);
end;

como llevar la funcion q esta en la codificacion a un "edit" para q en ves de ingresar x codificacion ingrese x pantalla y q cumpla su mismo proposito xfa aver si alguien me hecha una mano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

evaluador de funciones

Publicado por E.T. (1107 intervenciones) el 07/11/2013 20:51:12
Quieres que el parametro z de tu funcion, se alimente desde el edit? o que el resultado de la funcion aparesca en el edit?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

evaluador de funciones

Publicado por kevin (6 intervenciones) el 08/11/2013 00:43:11
q el parametro z se alimente desde edit y asi ya no poner en la codificacion la funcion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

evaluador de funciones

Publicado por E.T. (1107 intervenciones) el 08/11/2013 20:56:53
Ya que tienes declarada la funcion, en un boton, por ejemplo, pones el codigo

1
bisa(strtofloat(edit1.text));
o tambien así
1
power(strtofloat(edit1.text),3)-2*sin(strtofloat(edit1.text));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

evaluador de funciones

Publicado por kevin (6 intervenciones) el 08/11/2013 23:26:31
ya intente con eso pero no da
haber te paso toda la codificacion x si acaso
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
function bisa(z:real):real;
 begin
 bisa:=power(z,3)-2*sin(z);
 end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,ai,bs,fa,fb,fc,tol,error:extended;
k,n:integer;
begin
a:=StrToFloat(edit2.text);
b:=StrToFloat(Edit3.text);
ai:=a;bs:=b;
tol:=StrToFloat(edit4.text);
n:=ceil(log10((b-a)/tol)/log10(2));
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=6;
StringGrid1.cells[0,0]:='Iter';
StringGrid1.cells[1,0]:='x';
StringGrid1.cells[2,0]:='f(x)';
StringGrid1.cells[3,0]:='Error';
StringGrid1.cells[4,0]:='f(a)';
StringGrid1.cells[5,0]:='f(b)';
fa:=bisa(a); fb:=bisa(b);
if sign(fa)=sign(fb) then
label7.caption:='no existe solucion'
else
 begin
  error:=b-a;
  for k:=1 to n do
    begin
    error:=error/2;
    c:=a+error;
    fa:=bisa(a);
    fc:=bisa(c);
    if sign(fa)<> sign(fc) then
    begin
    b:=c;
    fb:=fc;
    end
    else
     begin
     a:=c;
     fa:=fc;
     end;
       StringGrid1.cells[0,k]:=IntToStr(k);
       StringGrid1.cells[1,k]:=FloatToStrF(c,ffFixed,15,8);
       StringGrid1.cells[2,k]:=FloatToStrF(fc,ffFixed,15,8);
       StringGrid1.cells[3,k]:=FloatToStrF(error,ffFixed,15,8);
       StringGrid1.cells[4,k]:=FloatToStrF(fa,ffFixed,15,8);
       StringGrid1.cells[5,k]:=FloatToStrF(fb,ffFixed,15,8);
       end;
     end;
                      { label7.Caption:='los valores evaluadas en el intervalo['+FloatToStrF(ai,ffFixed,10,3)+'';
                      'en '+IntToStr(n)+ ' Iteracciones'; }
                      label5.caption:='La solucion es';
                      edit5.Text:=FloatToStr((a+b)/2);
                      label6.Caption:='La funcion evaluada es';
                      edit6.text:=FloatToStr(bisa(a+b)/2);
                      end;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

evaluador de funciones

Publicado por E.T. (1107 intervenciones) el 08/11/2013 23:42:03
El codigo que muestras no marca error, no se que es lo que buscas hacer.
Describe bien tu problema, da datos de muestra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

evaluador de funciones

Publicado por kevin (6 intervenciones) el 08/11/2013 23:54:05
si funciona y corre normal pero si te fijas en la parte de fuction esta la funcion y en ves de poner en la codificacion esa funcion tengo q ingresarla x edit y q el programa q te mande corra normal
y lo q me emviaste

bisa(strtofloat(edit1.text));

ya intente pero cuando pongo eso recien me sale error en bisa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

evaluador de funciones

Publicado por E.T. (1107 intervenciones) el 09/11/2013 17:00:03
A ver, entonces pon el codigo como quieres que te quede y checamos que error sale
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

evaluador de funciones

Publicado por kevin (6 intervenciones) el 10/11/2013 00:17:43
cn el q me diste xq me sale error en edit1 mmm o es xq no esta dentro de begin y esta arriba en fuction xq segun yo el q me diste esta bien pero no quiere arrancar en ves de esa opcion otra q me puedas dar

bisa(strtofloat(edit1.text)); o tambien
power(strtofloat(edit1.text),3)-2*sin(strtofloat(edit1.text));
algo similar al de arriba xq me sale error en edit1 cuando pongo esa opcion de bisa(strtofloat(edit1.text));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar