Microsoft Small Basic

Program Listing: lcx215
' multi calculation method by NaochanON graphic version
gui()
Controls.ButtonClicked=Onbutton

Sub Onbutton
'cal="123.55/7654 - 87.12 - 1082/762*12.12" ' Calculating formula //answer = - 104.3136
'cal="-4*0.17 - 3*8 +6*3/2*9 + 9 -15/5+ 11.55" ' answer = 73.87
cal= Controls.GetTextBoxText(box1)
ChartoVal()
Multidevide()
TWresult()
Plusminus()
Controls.SetTextBoxText(box2,NewCal+" =" +res)
endsub

Sub ChartoVal
NN=0
MM=0
VL=""
Mark="+-*/"
Len= Text.GetLength(cal)
For i=1 To Len
V= Text.GetSubText(cal,i,1)
If Text.IsSubText(Mark,V)="False" And V<>" " Then
Vl=text.Append(Vl,V)
ElseIf Text.IsSubText(Mark,V)="True" then
NN=NN+1
Val[NN]=VL
VL=""
MM=MM+1
Function[MM]=V
endif
EndFor
NN=NN+1
Val[NN]=VL ' last value
EndSub

Sub Multidevide
For k=1 To MM
If Function[k]="/" Then
res=Val[K]/Val[K+1] ' A / B
Val[K+1]=res
Val[K]=""
Function[k]=""
ElseIf Function[k]="*" Then
res=Val[K]*Val[K+1] ' C*D
Val[K+1]=res
Val[K]=""
Function[k]=""
endif
EndFor
endsub

Sub TWresult
NewCal=""
For L=1 To NN
Newcal=Newcal+Val[L]+Function[L]
EndFor
endsub

Sub Plusminus
Len= Text.GetLength(Newcal)
NN=0
MM=0
VL=""
For i=1 To Len
V= Text.GetSubText(Newcal,i,1)
If Text.IsSubText("+-",V)="False" Then
Vl=text.Append(Vl,V)
ElseIf Text.IsSubText("+-",V)="True" then
NN=NN+1
NewVal[NN]=VL ' if start mark is "-" then NewVal[1]="" , NewFunction[1]="-"
VL=""
MM=MM+1
NewFunction[MM]=V
endif
EndFor
NN=NN+1
NewVal[NN]=VL ' last value
'----------------------------------------------------------------------------------------
res=0
NewFunction[0]="+" ' if start function is NULL
For j=MM To 0 Step -1
If NewFunction[j]="+" Then
res=res+newval[j+1]
ElseIf NewFunction[j]="-" Then
res=res-newval[j+1]
EndIf
EndFor
EndSub

Sub gui
GraphicsWindow.BackgroundColor="DarkGreen"
GraphicsWindow.Width=700
GraphicsWindow.Height=200
GraphicsWindow.FontSize=18
GraphicsWindow.BrushColor="Yellow"
GraphicsWindow.DrawText(10,40,"Formula")
GraphicsWindow.DrawText(10,120,"Result")
GraphicsWindow.BrushColor="Navy"
box1= Controls.AddMultiLineTextBox(100,20)
Controls.SetSize(box1,550,50)
GraphicsWindow.BrushColor="Red"
box2= Controls.AddMultiLineTextBox(100,100)
Controls.SetSize(box2,550,50)
btn= Controls.AddButton("Calc",100,160)
EndSub