所給的題目如下:
使用 InputBox 連續輸入數值資料,直到輸入值等於 -1 時才結束輸入。
最後,將所輸入的資料列出並輸出最大值。
自己寫的程式碼如下:
Private Sub Command1_Click()
sun = 0
Do
sun = sun + a
a = InputBox(\"請輸入數值\", \"請輸入\")
If a = -1 Then
Exit Do
End If
DoEvents
Print a (列出所輸入的資料)
Loop
Print sun (列出總和)
End Sub
所要求的是輸出\"最大值\",所以想請教各位,
要輸出\"最大值\"的部份,程式應該怎麼寫呢?
在此先謝謝各位!
2006-02-08 13:54:34 · 4 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
我現在主要的問題就是在於如何判別最大值!
如果輸入的數值是由文字方塊輸入,那我會用if....then做比較!
但是由於要比較的數值是由一個inputbox輸入的,要做比較的話,
不曉得應該如何描述!將輸入的數與
前一個輸入數值來做比較!這部份請各位再幫幫忙!謝謝!
2006-02-09 12:59:16 · update #1
你的程式不像是判別最大值~
而是求總合~!?
依你的題意有兩個重點
1. 輸入資料
2. 輸入 -1 則列出所有輸入數值資料,並判別最大值。
若沒錯的話~下列思考應該符合你的需求~(不寫程式了~~教你釣魚比給你魚好)
若要紀錄所有輸入資料以便未來輸出,建議用動態陣列。
至於判別最大值就更簡單了~在每一次輸入數值時~只要不是 -1 就去跟上一次輸入的數值作比較
動態更新最大值 (氣泡排序)
2006-02-09 19:51:17 補充:
用動態陣列~~相關函數
Ubound() 取得陣列目前上限
LBound() 取得陣列目前下限
用法
ex1----
dim d(100)
max=UBound(d)
'max=100
ex2------
dim d(5 to 10)
max=UBound(d)
min=LBound(D)
'max=10
'min=5
2006-02-09 19:51:25 補充:
所以若以動態陣列方式來做
先取得目前的陣列上限的陣列內容數值跟目前輸入的數值作比較
變數說明
a 'inputbox 所輸入的資料
d() '動態陣列
max '陣列上限
min '陣列下限
great '最大值
判別式
if a>great then great=a
d(max+1)=a
2006-02-09 19:52:22 補充:
(不一定要用氣泡排序,因為最大值市動態更新的~所以直接讓輸入值跟最大值比較就行了)
這樣應該很清楚了~~都已經給你程式了
2006-02-09 12:14:49 · answer #1 · answered by Anonymous · 0⤊ 0⤋
Dim i32Result As Integer
Dim i32Amount As Integer
Dim i32Sum As Integer
Dim i32Collection[999] As Integer
i32Result=0
i32Amount=0
i32Sum =0
Do
i32Input=InputBox("請輸入數值", "請輸入")
If (i32input = -1) Then
Exit Do
End If
' 記錄每一個數字 最大值 總和
i32Collection[i32Amount+1]=i32Input
i32Result = IIF(i32Input>i32Result,i32Input,i32Result)
i32Sum = i32Sum + i32Input
Loop
' 輸出結果
For i32Lp = 1 To i32NumAmount
Print i32Collection[i32Lp];
Next i32Lp
Print
Print "Max:";i32Result
Print "Sum:";i32Sum
這個寫法很簡化...缺點是...陣列有上限...不過妳可以用真的Collection寫就不會有上限的問題..
Collection是比較進階的寫法
2006-02-09 12:35:59 · answer #2 · answered by 蕃薯王 2 · 0⤊ 0⤋
Private Sub Form_Activate()
sun = 0
a = Val(InputBox("請輸入數值", "請輸入"))
Print a
Sum = a
Do
b = Val(InputBox("請輸入數值", "請輸入"))
If b <> -1 Then
Sum = Val(Sum) + b
If a > b Then
Print b
ElseIf a < b Then
a = b
Print b
Else
Print b
End If
Else
Exit Do
End If
Loop
Print "總合為"; Sum
Print "最大值為"; a
End Sub
2006-02-09 20:12:39 補充:
說明程式碼(1):第一行"sum=0"可以不用寫(2):第二行是要有第一個數a(3):第六行是要有第二個數b(4):第七行到第二十行是判斷a和b的大小(5):如果a>b的話就直接顯示b(6):如果a
2006-02-09 12:09:58 · answer #3 · answered by Anonymous · 0⤊ 0⤋
Private Sub Command1_Click()
Dim Sun As Integer, Max As String, A As String
Do
A = InputBox("請輸入數值", "請輸入")
If A = "" Then Exit Sub
If Max = "" Then Max = Val(A)
If Val(A) > Max Then Max = Val(A)
If A <> "-1" Then
Sun = Sun + Val(A):Print Val(A) '(列出所輸入的資料)
End If
Loop Until A = "-1"
Print Sun '(列出總和)
Print Max '列出最大值
End Sub
2006-02-08 15:07:01 · answer #4 · answered by W.J.S. 7 · 0⤊ 0⤋