Avatar billede micj12 Nybegynder
30. august 2003 - 21:45 Der er 2 kommentarer og
1 løsning

Script Regner forkert

Dette script virker tilsyneladende, men resultat er forkert

Følgende variabler bliver indsat:

                field "Pfield" = 900
                field "afield" = 200
                field "xfield" = 200
                field "Qfield" = 100
                field "Efield" = 300
                field "Cfield" = 200
                field "a1field" = 100

Resultat bliver 802 istedet for det rigtige på 793

      on mouseup
  global gsprog
  if (gsprog="dan") then
    val="Husk at udfylde alle felter"
  else
    if(gsprog="ger") then
      val="Alle felder müssen ausgefült werden"
    else
      if(gsprog="eng") then
        val="Please fill out all fields"
      else
        if(gsprog="fren") then
          val=""
        end if
      end if
    end if
  end if
 
  if(field "Pfield" = 0 or field "Pfield" = "")then
    alert val
  else
    if(field "afield" = 0 or field "afield" = "") then
      alert val
    else
      if(field "xfield" = 0 or field "xfield" = "") then
        alert val
      else
        if(field "Qfield" = 0 or field "Qfield" = "") then
          alert val
        else
          if(field "Efield" = 0 or field "Efield" = "") then
            alert val
          else
            if(field "Cfield" = 0 or field "Cfield" = "") then
              alert val
            else
              if(field "a1field" = 0 or field "a1field" = "") then
                alert val
              else
               
                global original
                set P = field "Pfield"
                set a = field "afield"
                set x = field "xfield"
                set Qelm = field "Qfield"
                set Eelm = field "Efield"
                set Celm = field "Cfield"
                set Aelm = field "a1field"
               
               
               
               
                set  MS = 0.00000785
               
               
               
                    if P > 0 and P < 1000 then
                      set    Vt = 20
                      set    Vh = 100
                      set    Vb = 900
                      set    Gt = 35
                      set    Gh = 455
                      set    Gb = 100
                      set    Gl = 1000
                    end if
               
                    if P >= 1000 and P < 2501 then
                      set    Vt = 25
                      set    Vh = 120
                      set    Vb = 1000
                      set    Gt = 40
                      set    Gh = 540
                      set    Gb = 100
                      set    Gl = 1000
                    end if
               
                    if P >= 2501 and P < 5000 then
                      set    Vt = 40
                      set    Vh = 140
                      set    Vb = 1200
                      set    Gt = 50
                      set    Gh = 650
                      set    Gb = 150
                      set    Gl = 1200
                    end if
               
                    if P >= 5000 and P < 8001 then
                      set    Vt = 50
                      set    Vh = 150
                      set    Vb = 1500
                      set    Gt = 60
                      set    Gh = 830
                      set    Gb = 150
                      set    Gl = 1500
                    end if
               
                    if P >= 8001 then
                      set    Vt = 50
                      set    Vh = 150
                      set    Vb = 1500
                      set    Gt = 60
                      set    Gh = 830
                      set    Gb = 150
                      set    Gl = 1500
                    end if
               
               
               
                if Gt < 40 then
                  set    t = 13
                  set    l = 570
                else
                  set    t = 16
                  set    l = 670
                end if
               
               
               
               
               
               
                --/** Beregning for Integreret *********************/
               
               
               
               
                set    Vange = 2 * Vt * Vh * Vb * MS
                set    Gaffelryg = 2 * Gt * Gb * Gh * MS
                set    Gaffelstyk = 2 * Gt * Gb * (Gl - l) * MS
                set    Gaffelspids1 = 2 * l * Gb * t * MS
                set    Gaffelspids2 = l * Gb * (Gt - t) * MS
                set    q = Vange + Gaffelryg + Gaffelstyk + Gaffelspids1 + Gaffelspids2
               
                set    q1 = q - Vange
                set    c = Vt + Gt
                set    Mvange = 0.5 * Vt * Vange
                set    Mgaffelryg = (Vt + 0.5 * Gt) * Gaffelryg
                set    Mgaffelstyk = (c + (0.5 * (Gl - l))) * Gaffelstyk
                set    Mgaffelspids1 = (c + Gl - (0.5 * l)) * Gaffelspids1
                set    Mgaffelspids2 = (c + Gl - ((2 / 3) * l)) * Gaffelspids2
                set    e = (Mvange + Mgaffelryg + Mgaffelstyk + Mgaffelspids1 + Mgaffelspids2) / q
                set    e1 = (Mgaffelryg + Mgaffelstyk + Mgaffelspids1 + Mgaffelspids2) / q1
               
                    if (Eelm < Celm) then
                 
                  set    p_elm = ((P * (x + a)) + (q * (x - c + e)) - (Qelm * (x - c + Eelm)) - (q1 * (x - c + Celm - Vt + e1))) / (a + x - c + Celm + Gt)
                    else
                 
                 
                      set    p_elm = ((P * (x + a)) + (q * (x - c + e)) - (Qelm * (x - c + Eelm))) / (Aelm + x - c + Celm)
                    end if
                put P
               
                put Vt
                put    Vh
                put    Vb
                put    Gt
                put    Gh
                put    Gb
                put    Gl
                put l
                put t
                put MS
                put Vange
                put Gaffelryg
                put Gaffelstyk
                put Gaffelspids1
                put Gaffelspids2
                put q
                put q1
                put c
                put Mvange
                put Mgaffelryg
                put Mgaffelstyk
                put Mgaffelspids1
                put Mgaffelspids2
               
               
                    set    a_new = Aelm
               
               
                put INTeger(p_elm) into field "P1field"
                put INTeger(a_new) into field "a1xfield"
              end if
            end if
          end if
        end if
      end if
    end if
  end if 
end
Avatar billede jmc Nybegynder
31. august 2003 - 00:18 #1
resultatet af hvad?
Avatar billede micj12 Nybegynder
31. august 2003 - 23:30 #2
Når jeg i variabelfelterne foroven indtaster værdierne regner scriptet ud fra nogle faste variabler. Da Eelm er større end Celm bruges følgende beregning
set    p_elm = ((P * (x + a)) + (q * (x - c + e)) - (Qelm * (x - c + Eelm))) / (Aelm + x - c + Celm)

hvis jeg laver det samme som javascript for jeg et andet resultat. Kan det være metoden lingo beregner på?.
Avatar billede ask-m Nybegynder
01. september 2003 - 16:40 #3
det kan være det hjælper hvis du gør director "opmærksom" på at du skal bruge værdien af den tekst der står i dine fields!

set P = value(field "Pfield")
set a = value(field "afield")
set x = value(field "xfield")
set Qelm = value(field "Qfield")
set Eelm = value(field "Efield")
set Celm = value(field "Cfield")
set Aelm = value(field "a1field")

og så skal du være opmærksom på "the floatprecission" (som default står til 4 - altså 4 decimaler, hvilket kan give afrundingsproblemer)
og du bør også være opmærksom på at integers delt med integers giver integers (altså at 5 / 2 = 2 i directors verden men 5/2.0 = 2.5000)
så de steder hvor det er vigtig kan du "konvertere" en integer til et floatingpoint ved enten at gange med 1.0 eller ved at bruge float()... (ex. set p = float(p))

Ask-M
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester