• Sábado 20 de Abril de 2024, 05:55

Autor Tema:  floating ... overfloat  (Leído 2549 veces)

althenna

  • Miembro activo
  • **
  • Mensajes: 66
    • Ver Perfil
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
  1.  
  2. procedure TForm1.Button2Click(Sender: TObject);
  3. var
  4. XL,XU,XR,FXL,FXU,FXR,producto,error,Eros,m1,m2:double;
  5. n1,n2,n3,n4,n5,n6,n7:double;
  6. begin
  7.   xl:=strtoint(int1.Text);
  8.   xu:=strtoint(int2.text);
  9.   eros:= strtoint(edit1.Text);
  10.   Error:=100;
  11.  
  12.    {ahora sacamos n1=orden0,n2=orden1,n3=orden2,n4=orden3,n5=orden4,n6=orden5 y n7=orden6}
  13.     n1:=strtofloat(edit8.Text); n2:=strtofloat(edit7.Text); n3:=strtofloat(edit6.Text);
  14.     n4:=strtofloat(edit5.Text); n5:=strtofloat(edit4.Text); n6:=strtofloat(edit3.Text);
  15.     n7:=strtofloat(edit2.Text);
  16.  
  17.     while (error>eros) do
  18.        begin
  19.            FXL:= (N1*XL)+(N2*XL)+(N3*XL)+(N4*XL)+(N5*XL)+(N6*XL)+(N7*XL);
  20.            FXU:= (N1*XU)+(N2*XU)+(N3*XU)+(N4*XU)+(N5*XU)+(N6*XU)+(N7*XL);  {PRIMER PASO}
  21.            m1:=  fxl*fxu;
  22.  
  23.            XR:=(XL*XU)/2; {PASO 2}
  24.  
  25.            FXR:= (N1*XR)+(N2*XR)+(N3*XR)+(N4*XR)+(N5*XR)+(N6*XR)+(N7*XR);
  26.  
  27.  
  28.            // **********ERROR EN ESTA LINEA**********
  29.  
  30.  
  31.             m2:= FXL*FXR;
  32.               if  m2<0 then
  33.                  begin  {inciso a}
  34.                     xu:=xr;
  35.                     FXU:=FXR;
  36.                  end
  37.                else
  38.                   begin   {inciso b}
  39.                     xl:=xr;
  40.                     FXL:= FXR;
  41.                   end;
  42.  
  43.                 error:= ((xu-xl)/xu)*100;
  44.                 floattostr(error);
  45.                 error:= Abs(error);
  46.  
  47.        end;//while
  48.          label12.Caption:='MARGEN DE ERROR ES '+floattostr(error);
  49. end;//proceso
  50.  
  51.  

Editado:
Agregué un distinctivo a la linea donde está el error.
Citar
// **********ERROR EN ESTA LINEA**********

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
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
    • Ver Perfil
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
  1. val(const var S: string, var I, var code: Integer);
  2.  

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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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: 00
    • Ver Perfil
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
    • Ver Perfil
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: 00
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
  1. rocedure TForm1.Button2Click(Sender: TObject);
  2. var
  3. XL,XU,XR,FXL,FXU,FXR,producto,error,Eros,m1,m2:double;
  4. n1,n2,n3,n4,n5,n6,n7:double;
  5. begin
  6.   xl:=strtofloat(int1.Text);
  7.   xu:=strtofloat(int2.text);
  8.   eros:= strtofloat(edit1.Text);
  9.   Error:=100;
  10.  
  11.    {ahora sacamos n1=orden0,n2=orden1,n3=orden2,n4=orden3,n5=orden4,n6=orden5 y n7=orden6}
  12.     n1:=strtofloat(edit8.Text); n2:=strtofloat(edit7.Text); n3:=strtofloat(edit6.Text);
  13.     n4:=strtofloat(edit5.Text); n5:=strtofloat(edit4.Text); n6:=strtofloat(edit3.Text);
  14.     n7:=strtofloat(edit2.Text);
  15.  
  16.     while (error>eros) do
  17.        begin
  18.            FXL:= (N1*XL)+(N2*XL)+(N3*XL)+(N4*XL)+(N5*XL)+(N6*XL)+(N7*XL);
  19.            FXU:= (N1*XU)+(N2*XU)+(N3*XU)+(N4*XU)+(N5*XU)+(N6*XU)+(N7*XL);  {PRIMER PASO}
  20.            m1:=  fxl*fxu;
  21.  
  22.            XR:=(XL+XU)/2; {PASO 2}
  23.  
  24.            FXR:= (N1*XR)+(N2*XR)+(N3*XR)+(N4*XR)+(N5*XR)+(N6*XR)+(N7*XR);
  25.            m2:= FXL*FXR;
  26.               if  m2<0 then
  27.                  begin  {inciso a}
  28.                     xu:=xr;
  29.                     FXU:=FXR&#59;
  30.                  end
  31.                else
  32.                   begin   {inciso b}
  33.                     xl:=xr;
  34.                     FXL:= FXR;
  35.                   end;
  36.  
  37.                 error:= ((xu-xl)/xu)*100;
  38.                 floattostr(error);
  39.                 error:= Abs(error);
  40.  
  41.        end;//while
  42.          label12.Caption:='MARGEN DE ERROR ES '+floattostr(error);
  43. end;//proceso
  44.