Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Gambas/Maths

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Back to Gambas The Cross Sum Program This miniprogram calculates the cross sum of an integer. You need 2 textboxes and 1 commandbutton to get the program going. Please beware of the signs / and \ . In this program the sign \ is used for a division without a remainder. The Code 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 Addy The Sum Program This miniprogram calculates the sum of a row of integers. You need 1 textarea, 1 textbox and 1 commandbutton to get the program going. You can also add negative integers. Very helpful is the Split command and the String array String[] The Code 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 The Average Program This miniprogram calculates the average of a row of integers. You need 1.textarea, 2 textboxes and 1 commandbutton to get the program going. The Code 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 The Median The Median of a list of values lies between two equal parts of the list. 50% of the values ar greater or equal to the median. 50% are smaller or equal to the median. In contrary to the average the median is not influenced that much by extreme values. If you want to program the median, you have to 1.sort your list of values 2.check if the list has an even or an odd number of values. 3.choose the right formula for the median. for an odd number of values xmedian = x[(n+1)/2] for an even number of values xmedian = 1/2*(x[n/2] + x[n/2+1]) example 1: sorted list of values: 11 12 13 14 15 The number of values is odd. n = 5 (n+1)/2 = 6/2 = 3 xmedian = x[3] = 13 example 2. sorted list of values: 11 12 13 14 15 16 The number of values is even , n = 6 n/2 = 6/2 = 3 x[3] = 13 x[4] = 14 xmedian = 1/2*(13+14) = 13,5 You can take the list from above and copy it into the Gambas median program. Use the clipboard of your computer for that. Ctrl+C = Copy , Ctrl + V = Paste example program You need 2 textareas , 3 commandbuttons and 1 textbox, to get the program going: ' 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