跳轉到內容

Gambas/數學

來自華夏公益教科書,開放的世界,開放的書籍

返回 Gambas

交叉求和程式

[編輯 | 編輯原始碼]

這個小程式計算一個整數的交叉求和。你需要兩個文字框和一個命令按鈕來執行程式。

請注意符號 / 和 \。在這個程式中,符號 \ 用於無餘數除法。

程式碼

 PUBLIC SUB Button1_Click()

     DIM z AS Integer
     DIM crosssum AS Integer

     z = Val(TextBox1.Text)

     DO WHILE z <> 0 
       crosssum = crosssum + z MOD 10
       z= z \ 10 
     LOOP 

     TextBox2.Text = Str$(crosssum)
 END

求和程式

[編輯 | 編輯原始碼]

這個小程式計算一列整數的總和。你需要一個文字區域、一個文字框和一個命令按鈕來執行程式。你也可以新增負整數。非常有幫助的是 Split 命令和字串陣列 String[]

程式碼

PUBLIC SUB Button1_Click()
  DIM text AS String
  DIM summe AS Float
  DIM Elt AS String[]
  DIM Sb AS String

  text = textarea1.Text
  Elt = Split(text,Chr(10))

  FOR EACH Sb IN Elt
    summe = summe + Val(sb)
  NEXT

  textbox1.Text = summe
END

平均值程式

[編輯 | 編輯原始碼]

這個小程式計算一列整數的平均值。你需要一個文字區域、兩個文字框和一個命令按鈕來執行程式。

程式碼

 PUBLIC SUB Button1_Click()
   DIM text AS String
   DIM summe AS Float
   DIM mw AS Float
   DIM varianz AS Float
   DIM sigma AS Float
   DIM Liste AS String[]
   DIM Einzelwert AS String

   text = textarea1.Text
   Liste = Split(text,Chr(10))

   FOR EACH Einzelwert IN Liste
      summe = summe + Val(Einzelwert)
   NEXT

   mw = summe / Liste.Length
   textbox1.Text = mw
   varianz = 0

   FOR EACH Einzelwert IN Liste
      varianz = varianz + ((Val(Einzelwert) - mw)^2)
      PRINT Einzelwert,mw,((Val(Einzelwert) - mw)^2)
      PRINT varianz
   NEXT

   varianz = varianz / (Liste.Length - 1)
   PRINT varianz
   sigma = Sqr(varianz)
   textbox2.Text = sigma
 END

中位數

[編輯 | 編輯原始碼]

一組值的**中位數**位於這組值的兩等份之間。50% 的值大於或等於中位數。50% 的值小於或等於中位數。與平均值不同的是,中位數不會受到極端值的影響太大。

如果你想程式設計計算中位數,你需要:

  • 1. 對你的值列表進行排序
  • 2. 檢查列表中是否有偶數個值還是奇數個值
  • 3. 選擇中位數的正確公式
    • 對於奇數個值
xmedian = x[(n+1)/2]
    • 對於偶數個值
xmedian = 1/2*(x[n/2] + x[n/2+1])

示例 1

排序後的值列表

11
12
13
14
15    

值的個數是奇數,n = 5

(n+1)/2 =  6/2 = 3 

xmedian = x[3] = 13

示例 2

排序後的值列表

11
12
13
14
15
16

值的個數是偶數,n = 6

n/2 =  6/2 = 3 
x[3] = 13
x[4] = 14
xmedian = 1/2*(13+14) = 13,5

你可以從上面獲取列表,並將其複製到 Gambas 中位數程式。使用計算機的剪貼簿來操作。Ctrl+C = 複製,Ctrl + V = 貼上

示例程式

你需要兩個文字區域、三個命令按鈕和一個文字框來執行程式

' Gambas CLASS file
 PUBLIC liste AS String[]
 PUBLIC SUB Form_Open()
   ME.Text = "Computate the Median "
 END
 PUBLIC SUB Button1_Click()
 'sort
 Dim c AS Integer 
 Dim j AS Integer 
 Dim n AS Integer 
 Dim y AS Variant
 Dim liste AS String[]
 Dim element AS String 
 Dim txt AS String 
 Dim text AS String 
 text = Textarea1.Text
 liste = Split(text,Chr(10))
 y = 0
 n = liste.length
 REPEAT 
 c = 0
  FOR j = 0 TO n - 2
    'PRINT j,y,liste[0],ar[1],ar[2],ar[3],ar[4]
    IF Val(liste[j]) > Val(liste[j + 1]) THEN 
      y = Val(liste[j]) 
      liste[j] = liste[j + 1]
      liste[j + 1] = Str(y) 
      c = 1
    ENDIF 
  NEXT 
 UNTIL c = 0 
 FOR EACH element IN liste 
 txt = txt & Str(element) & Chr(10) 
 NEXT
 PRINT txt
 textarea2.Text = ""
 txt = Mid$(txt,1,-1)
 'the last CR has to be killed chr(10) 
 textarea2.Text = txt
 END
 PUBLIC SUB Button2_Click()
 'computate median, but sort first !! 
  Dim text AS String
  Dim median AS Float
  Dim liste AS String[]
  Dim posten AS String
  text = Textarea2.Text
  liste = Split(text,Chr(10))
  'count the length of your list and choose the right formula 
     IF liste.Length MOD 2 THEN 
   'PRINT liste.Length MOD 2 & " odd"
   'PRINT (liste.length + 1)/2
   'PRINT liste[(liste.length + 1)/2 - 1]
   median = Val(liste[(liste.length + 1)/2 - 1])
   'the array starts with the element 0 not with the element 1 !
   ELSE
   'PRINT liste.Length MOD 2 & " even"
   median = (Val(liste[liste.length/2 - 1]) + Val(liste[liste.length/2]))/2
   ENDIF 
  textbox1.Text = Str(median)
  END
  PUBLIC SUB Button3_Click()
  'list of values as an example 
  textarea1.Text = "114,3"
  textarea1.Text = textarea1.Text & Chr(10) & "135,7"
  textarea1.Text = textarea1.Text & Chr(10) & "104,8"
  textarea1.Text = textarea1.Text & Chr(10) & "118,5"
  textarea1.Text = textarea1.Text & Chr(10) & "125,7"
  textarea1.Text = textarea1.Text & Chr(10) & "121,4"
  textarea1.Text = textarea1.Text & Chr(10) & "122,4"
  textarea1.Text = textarea1.Text & Chr(10) & "96,8"
  textarea1.Text = textarea1.Text & Chr(10) & "118,9"
  textarea1.Text = textarea1.Text & Chr(10) & "120"
  textarea1.Text = textarea1.Text & Chr(10) & "112,2"
  textarea1.Text = textarea1.Text & Chr(10) & "127,9"
  textarea1.Text = textarea1.Text & Chr(10) & "122,8"
  textarea1.Text = textarea1.Text & Chr(10) & "128,9"
  textarea1.Text = textarea1.Text & Chr(10) & "120,3"
 'median = 120,3
 END
華夏公益教科書