Miércoles 20 de Noviembre de 2024, 18:43
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Delphi
»
floating ... overfloat
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: floating ... overfloat (Leído 2714 veces)
althenna
Miembro activo
Mensajes: 66
floating ... overfloat
«
en:
Domingo 30 de Octubre de 2005, 20:29 »
0
se que el codigo esta de lo mas simple pero es en base de un algoritmo matematico por lo cual lo debo de dejar asi, mi problema es cierto error el la linea donde se calcula el m2 (cuyo resultado lo necesito para tomar una decision), declare las variables como tipo double y use el strtofloat para tomar los datos
Código: Text
procedure TForm1.Button2Click(Sender: TObject);
var
XL,XU,XR,FXL,FXU,FXR,producto,error,Eros,m1,m2:double;
n1,n2,n3,n4,n5,n6,n7:double;
begin
xl:=strtoint(int1.Text);
xu:=strtoint(int2.text);
eros:= strtoint(edit1.Text);
Error:=100;
{ahora sacamos n1=orden0,n2=orden1,n3=orden2,n4=orden3,n5=orden4,n6=orden5 y n7=orden6}
n1:=strtofloat(edit8.Text); n2:=strtofloat(edit7.Text); n3:=strtofloat(edit6.Text);
n4:=strtofloat(edit5.Text); n5:=strtofloat(edit4.Text); n6:=strtofloat(edit3.Text);
n7:=strtofloat(edit2.Text);
while (error>eros) do
begin
FXL:= (N1*XL)+(N2*XL)+(N3*XL)+(N4*XL)+(N5*XL)+(N6*XL)+(N7*XL);
FXU:= (N1*XU)+(N2*XU)+(N3*XU)+(N4*XU)+(N5*XU)+(N6*XU)+(N7*XL); {PRIMER PASO}
m1:= fxl*fxu;
XR:=(XL*XU)/2; {PASO 2}
FXR:= (N1*XR)+(N2*XR)+(N3*XR)+(N4*XR)+(N5*XR)+(N6*XR)+(N7*XR);
// **********ERROR EN ESTA LINEA**********
m2:= FXL*FXR;
if m2<0 then
begin {inciso a}
xu:=xr;
FXU:=FXR;
end
else
begin {inciso b}
xl:=xr;
FXL:= FXR;
end;
error:= ((xu-xl)/xu)*100;
floattostr(error);
error:= Abs(error);
end;//while
label12.Caption:='MARGEN DE ERROR ES '+floattostr(error);
end;//proceso
Editado:
Agregué un distinctivo a la linea donde está el error.
Citar
// **********ERROR EN ESTA LINEA**********
Tweet
Enko
Miembro de PLATA
Mensajes: 1562
Nacionalidad:
Re: floating ... overfloat
«
Respuesta #1 en:
Lunes 31 de Octubre de 2005, 13:26 »
0
¿Cual es el error y en que linea ocurre?
Alpha_
Miembro activo
Mensajes: 72
Re: floating ... overfloat
«
Respuesta #2 en:
Lunes 31 de Octubre de 2005, 13:37 »
0
Supongo que tu problema será en la conversión de los datos. Si es que estás usando datos con decimales, no podés usar la función StrToInt, porque no te servirá de mucho. Intentá con el procedimiento Val, puede servirte.
Código: Text
val(const var S: string, var I, var code: Integer);
Si todo va bien, se convierte la cadena S en la variable numérica I, y Code vuelve en cero. En caso contrario, code contiene el número de caracter que causó error en la conversión.
Saludos.
Alpha
http]
bartolomeo
Miembro MUY activo
Mensajes: 207
Re: floating ... overfloat
«
Respuesta #3 en:
Lunes 31 de Octubre de 2005, 14:32 »
0
El motivo de este post no es para dar una respuesta a el inconveninte del forista, si no para recalcar en que hay que leer las recomendaciones de como formular preguntas y los TITULOS DE LOS POST.
estos titulos deben ser descriptivos para que cuando se genere una busqueda sea facil identificarlos.
por lo cual rechazo todo post que no tenga una calidad minima en sus preguntas y en la de sus titulos.
[size=109]
Por que Rolo soy yo¡¡¡¡¡
[/size]
Amilius
Miembro HIPER activo
Mensajes: 665
Re: floating ... overfloat
«
Respuesta #4 en:
Lunes 31 de Octubre de 2005, 14:45 »
0
Pues definitivamente por el bien del foro es mejor eliminar los temas huerfanos de un buen titulo y que no tengan preguntas claras y puntuales.
bartolomeo
Miembro MUY activo
Mensajes: 207
Re: floating ... overfloat
«
Respuesta #5 en:
Lunes 31 de Octubre de 2005, 20:45 »
0
bien pues este no lo elimino pero si lo cierro y que se tome como ejemplo para futuros post.
[size=109]
Por que Rolo soy yo¡¡¡¡¡
[/size]
Enko
Miembro de PLATA
Mensajes: 1562
Nacionalidad:
Re: floating ... overfloat
«
Respuesta #6 en:
Viernes 4 de Noviembre de 2005, 18:50 »
0
Debido a que althenna en un p.m. me ha enviado las correcciones a su post, el mismo queda reabierto.
PD: modifiqué el codigo de arriba de todo.
bartolomeo
Miembro MUY activo
Mensajes: 207
Re: floating ... overfloat
«
Respuesta #7 en:
Viernes 4 de Noviembre de 2005, 20:52 »
0
Perfecto Ok, completamente deacuerdo
[size=109]
Por que Rolo soy yo¡¡¡¡¡
[/size]
Enko
Miembro de PLATA
Mensajes: 1562
Nacionalidad:
Re: floating ... overfloat
«
Respuesta #8 en:
Viernes 4 de Noviembre de 2005, 21:46 »
0
creo que
Citar
XR:=(XL*XU)/2; {PASO 2}
XR tiene un valor indefinido y eso causa error
althenna
Miembro activo
Mensajes: 66
Re: floating ... overfloat
«
Respuesta #9 en:
Viernes 4 de Noviembre de 2005, 22:43 »
0
indefinido? como es eso podrias explicarme
Citar
XR:=(XL*XU)/2; {PASO 2}
por cierto creo que es
XR:=(XL+XU)/2;
althenna
Miembro activo
Mensajes: 66
Re: floating ... overfloat
«
Respuesta #10 en:
Sábado 5 de Noviembre de 2005, 05:02 »
0
perdon por el doble post
ya encontre el error y ya esta corregido, no cambie a float ni xl ni xu y la formila como habia dicho estaba incorrecta.. puff ya respiro jaajaja muchas gracias y disculpen las molestias de nuevo es que de plano no pierdo la cabeza por que esta en mis hombros (mas bien cuello pero asi es el dicho)
Código: Text
rocedure TForm1.Button2Click(Sender: TObject);
var
XL,XU,XR,FXL,FXU,FXR,producto,error,Eros,m1,m2:double;
n1,n2,n3,n4,n5,n6,n7:double;
begin
xl:=strtofloat(int1.Text);
xu:=strtofloat(int2.text);
eros:= strtofloat(edit1.Text);
Error:=100;
{ahora sacamos n1=orden0,n2=orden1,n3=orden2,n4=orden3,n5=orden4,n6=orden5 y n7=orden6}
n1:=strtofloat(edit8.Text); n2:=strtofloat(edit7.Text); n3:=strtofloat(edit6.Text);
n4:=strtofloat(edit5.Text); n5:=strtofloat(edit4.Text); n6:=strtofloat(edit3.Text);
n7:=strtofloat(edit2.Text);
while (error>eros) do
begin
FXL:= (N1*XL)+(N2*XL)+(N3*XL)+(N4*XL)+(N5*XL)+(N6*XL)+(N7*XL);
FXU:= (N1*XU)+(N2*XU)+(N3*XU)+(N4*XU)+(N5*XU)+(N6*XU)+(N7*XL); {PRIMER PASO}
m1:= fxl*fxu;
XR:=(XL+XU)/2; {PASO 2}
FXR:= (N1*XR)+(N2*XR)+(N3*XR)+(N4*XR)+(N5*XR)+(N6*XR)+(N7*XR);
m2:= FXL*FXR;
if m2<0 then
begin {inciso a}
xu:=xr;
FXU:=FXR;
end
else
begin {inciso b}
xl:=xr;
FXL:= FXR;
end;
error:= ((xu-xl)/xu)*100;
floattostr(error);
error:= Abs(error);
end;//while
label12.Caption:='MARGEN DE ERROR ES '+floattostr(error);
end;//proceso
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Delphi
»
floating ... overfloat