2016-04-18 6 views
0

私は何が欠けているのか理解しようとしています。私はすでにあなたがそれを見てこの宿題を提出しました。降雨量の最小値と最大値を返すときは、最小値と最大値で何月分を引き継ぐべきですか?私はいろいろな方法で試してみましたが、何もうまくいかないようです私は何が欠けていますか?私はそれが4月19日に期限が切れたので、急いではなく、私はすでにそれを提出しました。私が間違っている場所を見てみるだけです。視覚の基礎:降水量の統計

Const intMONTHS As Integer = 11 
Dim sngRain(intMONTHS) As Single 
Dim strMonths() As String = {"January", "February", "March", "April", 
     "May", "June", "July", "August", "September", "October", "November", 
     "December"} 
Private Sub btnInput_Click(sender As Object, e As EventArgs) Handles btnInput.Click 
    lstOutput.Items.Add("Monthly Rainfall Input") 
    lstOutput.Items.Add("___________________________") 
    GetRainAmount(sngRain) 

End Sub 

Sub GetRainAmount(ByRef sngRain() As Single) 
    Dim intCount As Integer = 0 
    Do While intCount < sngRain.Length 
     Try 
      sngRain(intCount) = 
       CDec(InputBox("Please enter the amount of Rain(in inches) for " & strMonths(intCount))) 
      lstOutput.Items.Add(("Rainfall for " & strMonths(intCount) & " = " & sngRain(intCount))) 
      intCount += 1 
     Catch ex As Exception 
      MessageBox.Show("Enter a valid numeric value.") 
     End Try 
    Loop 
End Sub 

Function Total(ByVal sngRain() As Single) As Single 
    Dim sngTotal As Single = 0 
    Dim intCount As Integer 

    For intCount = 0 To (sngRain.Length - 1) 
     sngTotal += sngRain(intCount) 

    Next 
    Return sngTotal 
End Function 

Function Average(ByVal sngRain() As Single) As Single 
    Return Total(sngRain)/strMonths.Length 
End Function 

Function Minimum(ByVal sngRain() As Single) As Single 
    Dim intCount As Integer 
    Dim sngMinimum As Single 
    Dim intminIndex As Integer 

    sngMinimum = sngRain(0) 

    For intCount = 0 To (sngRain.Length - 1) 
     If sngRain(intCount) < sngMinimum Then 
      sngMinimum = sngRain(intCount) 
      intminIndex = intCount 
     End If 
    Next 
    Return sngMinimum 

End Function 
Function Maximum(ByVal sngRain() As Single) As Single 
    Dim intCount As Integer 
    Dim sngMaximum As Single 
    Dim intmaxIndex As Integer 

    sngMaximum = sngRain(0) 

    For intCount = 0 To (sngRain.Length - 1) 
     If sngRain(intCount) > sngMaximum Then 
      sngMaximum = sngRain(intCount) 
      intmaxIndex = CInt(strMonths(intCount)) 
     End If 
    Next 
    Return sngMaximum 

End Function 

Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click 
    Dim intminIndex As Integer 
    Dim intmaxIndex As Integer 
    Dim sngTotal As Single 
    Dim sngAverage As Single 
    Dim sngMinimum As Single 
    Dim sngMaximum As Single 

    sngTotal = Total(sngRain) 
    sngAverage = Average(sngRain) 
    sngMinimum = Minimum(sngRain) 
    sngMaximum = Maximum(sngRain) 

    lblTotalRain.Text = ("The total annual rainfall was " & sngTotal) 
    lblAverage.Text = ("The average monthly rainfall was " & sngAverage) 
    lblMinimum.Text = ("The minimum monthly rainfall was " & sngMinimum & "(" & strMonths(intminIndex) & ")") 
    lblMaximum.Text = ("The maximum monthly rainfall was " & sngMaximum & "(" & strMonths(intmaxIndex) & ")") 
End Sub 

Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click 
    lstOutput.Items.Clear() 
    lblTotalRain.Text = String.Empty 
    lblAverage.Text = String.Empty 
    lblMinimum.Text = String.Empty 
    lblMaximum.Text = String.Empty 

End Sub 

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click 
    Me.Close() 
End Sub 

エンドクラス

+0

Aクラス{分(int型?)MAX(INT)AVG(シングル)、月(文字列)}あなたは '呼ぶのです – Plutonix

+0

彼らは同じ型でない場合は特に情報の異なるビットをリンクするための理想的ですGetRainAmount'? – user2216

+0

私はちょうどその名前を作りました。私はそれに何でも名前を付けて、それに付随することができた。 – Jarvis0007

答えて

1

あなたは適切に最小限の機能で最大の機能とintminIndexでintmaxIndexを設定するように見えますが、これらの値は、各関数に対してローカルです。 btnDisplay_Clickの変数は設定されていません。

intminIndex変数とintmaxIndex変数ByRefを最小値と最大値の関数にそれぞれ渡すことで、最小月インデックスと最大月インデックスを取得できます。

Function Minimum(ByVal sngRain() As Single, ByRef intminIndex as Integer) As Single 
    Dim intCount As Integer 
    Dim sngMinimum As Single 

    sngMinimum = sngRain(0) 

    For intCount = 0 To (sngRain.Length - 1) 
     If sngRain(intCount) < sngMinimum Then 
      sngMinimum = sngRain(intCount) 
      intminIndex = intCount 
     End If 
    Next 
    Return sngMinimum 

End Function 
Function Maximum(ByVal sngRain() As Single, ByRef intmaxIndex as Integer) As Single 
    Dim intCount As Integer 
    Dim sngMaximum As Single 

    sngMaximum = sngRain(0) 

    For intCount = 0 To (sngRain.Length - 1) 
     If sngRain(intCount) > sngMaximum Then 
      sngMaximum = sngRain(intCount) 
      intmaxIndex = intCount 
     End If 
    Next 
    Return sngMaximum 

End Function 

Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click 
    Dim intminIndex As Integer = 0 
    Dim intmaxIndex As Integer = 0 
    Dim sngTotal As Single 
    Dim sngAverage As Single 
    Dim sngMinimum As Single 
    Dim sngMaximum As Single 

    sngTotal = Total(sngRain) 
    sngAverage = Average(sngRain) 
    sngMinimum = Minimum(sngRain, intminIndex) 
    sngMaximum = Maximum(sngRain, intmaxIndex) 

    lblTotalRain.Text = ("The total annual rainfall was " & sngTotal) 
    lblAverage.Text = ("The average monthly rainfall was " & sngAverage) 
    lblMinimum.Text = ("The minimum monthly rainfall was " & sngMinimum & "(" & strMonths(intminIndex) & ")") 
    lblMaximum.Text = ("The maximum monthly rainfall was " & sngMaximum & "(" & strMonths(intmaxIndex) & ")") 
End Sub 
+0

heapunderflow:ありがとうございました。それは今、完璧に動作します。仕事を送る前に私がそれを捕らえたかったら願っています。それを指摘していただきありがとうございます。 – Jarvis0007

+0

あなたは大歓迎です! – heapunderflow

関連する問題