2013-08-10 2 views
1

그래서 과제 수를 묻는 프로그램을 작성하고 있습니다 (예 : 20). 각 과제에서 얻은 총점과 총점을 묻는 여러 번 반복합니다. 최종 성적을받을 수 있습니다. 예를 들어 사용자가 과제 1을 할당 한 과제 1을 50 점에서 48 점, 과제 2를 과제 점수 40 점에서 35 점을 얻은 경우 프로그램에서 점수를 92로 표시합니다.점수를 계산하는 VB 프로그램

지금까지 내가 가지고있는 것 :

Public Class Form1 

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


    Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate.Click 
     Dim amountAssignments As Integer 
     Dim pointsEarned As Integer = 0 
     Dim pointsEarnedTotal As Integer = 0 
     Dim pointsPossible As Integer = 0 
     Dim pointsPossibleTotal As Integer = 0 
     Dim Assignment As Integer = 1 

     Integer.TryParse(txtAmount.Text, amountAssignments) 

     Do Until Assignment > amountAssignments 
      txtAmount.Text = String.Empty 
      lblAmount.Text = "Enter Points Given on Assignment " & Assignment & ":" 
      Integer.TryParse(txtAmount.Text, pointsEarned) 
      pointsEarnedTotal = pointsEarnedTotal + pointsEarned 
      lblAmount.Text = "Enter Points Possible on Assignment " & Assignment & ":" 
      Integer.TryParse(txtAmount.Text, pointsPossible) 
      pointsPossibleTotal = pointsPossibleTotal + pointsPossible 
      Assignment = Assignment + 1 
     Loop 

     lblAmount.Text = "Enter the amount of Assignments: " 
     lblGrade.Text = (pointsEarnedTotal/pointsPossibleTotal) 

    End Sub 
End Class 

구문이 올바르지 만 프로그램을 실행하고 할당 된 숫자가 입력되면 계산 된 입력은 다른 입력이없는 NaN으로 등급이 표시됩니다.

눈을 보면서 논리적으로 엉망이 된 곳을 알려줄 수있는 다른 눈 집합을 사용할 수 있습니다.

미리 감사드립니다.

+2

디버거에서 무엇을 말합니까? (루프 시작 부분에 중단 점을 설정 한 다음 앱을 실행하십시오. 코드를 단계별로 실행하고 변수 및 변수를 확인하십시오.) 디버거는 매우 유용한 도구 일 수 있으므로 사용법을 배워야합니다 빨리. –

+0

확실히 디버거를 사용하십시오 - 코드를 보면서 직감이 있습니다. 기대했던대로하지 않습니다. 코드를 살펴보면서 정확히 무엇을하고 있는지, 그리고 의도 한 곳에서 벗어나는 곳을 보게 될 것입니다. – Tim

+1

그래서 한 걸음 물러서서 다시 돌아와서이 글을 읽기도 전에 "입력을 묻지 않기 때문에 프로그램이 작동하지 않는다면 어떻게 될까?" 그게 문제를 일으키는 원인이되는 것이 확실합니다 ... –

답변

0

이 프로그램은 루프가 시작될 때 사용자 개입을하지 않는 것 같습니다. 내가 뭘 할 것인가는 분명히 사용자가 텍스트 상자에 할당 된 양을 입력하게하고 거기에서 사용자가 입력 상자에서 슬래시로 구분 된 기호를 입력하도록 요청할 것입니다. 예를 들어 45/50을 입력하면 프로그램에서 색인을 찾습니다. "/"앞의 모든 문자는 pointsEarned이고 '/'다음의 모든 문자는 pointsPossible에 추가되고 pointsPossibleTotal
에 추가됩니다. 간다 ... 그렇게된다면 나를 가리키는 줄

`개인 서브 butGetMarks_Click (은 System.Object으로 보낸 사람, 경우 System.EventArgs으로 전자) 정수 Integer.TryParse으로 정수 = 0 희미한 totalAssignments으로 butGetMarks.Click 희미한 과제를 처리 (txt Assignments.Text, totalAssignments)

Dim pointsEarned As Double = 0 
    Dim pointsEarnedTotal As Double = 0 

    Dim possibleEarned As Double = 0 
    Dim possibleEarnedTotal As Double = 0 
    Dim temp As String 

    For i As Integer = 1 To totalAssignments 
     temp = InputBox("Enter marks per assignment separated by /") 
     Dim i1 As Integer 
     i1 = temp.IndexOf("/") 'read index of/
     pointsEarned = temp.Substring(0, i1) 'read from start until/character 
     possibleEarned = temp.Substring(i1 + 1) 'read from after/character onwards 
     'add to totals 
     possibleEarnedTotal += possibleEarned 
     pointsEarnedTotal += pointsEarned 
    Next i 
    MessageBox.Show(pointsEarnedTotal & "/" & possibleEarnedTotal) 
End Sub` 
+0

그건 내가 믿기 때문에 작동합니다. 내가 마침내 여기있는 모든 사람들이 결국 디버그 도구를 사용하도록 제안한 것과 유사합니다. 나는 당신에게 점수를 줄 것이다. 그러나 나는 아직 15 명의 담당자가 없다. 죄송합니다 ... –

+0

... 정말 50 점이 필요합니다 !! 언제 당신이 plz 최대 rep 나를 얻을 않습니다. 그것을 시도하고 letme 내 프로그래밍 기술에 대해 좋은 느낌이 뭘 whatsup 알고 : D 조 – Manny265

관련 문제