Reputation: 3
Can someone explain why the below code won't work? It's supposed to find the average in a group of 15 numbers, then assign a letter grade to them. From what I can tell, the problem is in the If statement, although I can't seem to find what it is that causes the problem.
Module Module1
Sub Main()
Dim Input1 As Integer
Dim Input2 As Integer
Dim Input3 As Integer
Dim Input4 As Integer
Dim Input5 As Integer
Dim Input6 As Integer
Dim Input7 As Integer
Dim Input8 As Integer
Dim Input9 As Integer
Dim Input10 As Integer
Dim Input11 As Integer
Dim Input12 As Integer
Dim Input13 As Integer
Dim Input14 As Integer
Dim Input15 As Integer
Dim Adder As Integer
Dim Divider As Integer
Console.WriteLine("Please enter number 1/15")
Input1 = Console.ReadLine()
Console.WriteLine("Please enter number 2/15")
Input2 = Console.ReadLine()
Console.WriteLine("Please enter number 3/15")
Input3 = Console.ReadLine()
Console.WriteLine("Please enter number 4/15")
Input4 = Console.ReadLine()
Console.WriteLine("Please enter number 5/15")
Input5 = Console.ReadLine()
Console.WriteLine("Please enter number 6/15")
Input6 = Console.ReadLine()
Console.WriteLine("Please enter number 7/15")
Input7 = Console.ReadLine()
Console.WriteLine("Please enter number 8/15")
Input8 = Console.ReadLine()
Console.WriteLine("Please enter number 9/15")
Input9 = Console.ReadLine()
Console.WriteLine("Please enter number 10/15")
Input10 = Console.ReadLine()
Console.WriteLine("Please enter number 11/15")
Input11 = Console.ReadLine()
Console.WriteLine("Please enter number 12/15")
Input12 = Console.ReadLine()
Console.WriteLine("Please enter number 13/15")
Input13 = Console.ReadLine()
Console.WriteLine("Please enter number 14/15")
Input14 = Console.ReadLine()
Console.WriteLine("Please enter number 15/15")
Input15 = Console.ReadLine()
Adder = (Input1) + (Input2) + (Input3) + (Input4) + (Input5) + (Input6) + (Input7) + (Input8) + (Input9) + (Input10) + (Input11) + (Input12) + (Input13) + (Input14) + (Input15)
Divider = Adder / 15
If 100 >= Divider >= 90 Then
Console.WriteLine("Your average Grade is an A, and your average in numbers is {0}", Divider)
ElseIf 89 >= Divider >= 80 Then
Console.WriteLine("Your average Grade is a B, and your average in numbers is {0}", Divider)
ElseIf 79 >= Divider >= 70 Then
Console.WriteLine("Your average Grade is a C, and your average in numbers is {0}", Divider)
ElseIf 69 >= Divider >= 60 Then
Console.WriteLine("Your average Grade is a D, and your average in numbers is {0}", Divider)
ElseIf 59 >= Divider Then
Console.WriteLine("Your average Grade is an F, and your average in numbers is {0}", Divider)
End If
Console.ReadLine()
End Sub
End Module
Upvotes: 0
Views: 55
Reputation: 205
You can't do the following:
If 100 >= Divider >= 90
I believe that is interpreted to be something like
If (100 >= Divider) >= 90
Where it is comparing a boolean converted to a integer.
To get a check for that range you would need to do:
If (100 >= Divider) AndAlso (Divider >= 90)
In short you have bad syntax with your If Check
As an added note, I would reccomend taking advantage of the strength of conditional logic by skipping the range checks and doing something like:
If Divider >= 90 Then
Console.WriteLine("Your average Grade is an A, and your average in numbers is {0}", Divider)
ElseIf Divider >= 80 Then
Console.WriteLine("Your average Grade is a B, and your average in numbers is {0}", Divider)
ElseIf Divider >= 70 Then
Console.WriteLine("Your average Grade is a C, and your average in numbers is {0}", Divider)
ElseIf Divider >= 60 Then
Console.WriteLine("Your average Grade is a D, and your average in numbers is {0}", Divider)
Else
Console.WriteLine("Your average Grade is an F, and your average in numbers is {0}", Divider)
End If
Upvotes: 1
Reputation: 446
You made an error in reasoning.
The Divider
in your case has a Maximum value of 15. so it's obviously always an F Grade.
If Adder >= 90 Then
Console.WriteLine("Your average Grade is an A, and your average in numbers is {0}", Divider)
ElseIf Adder >= 80 Then
Console.WriteLine("Your average Grade is a B, and your average in numbers is {0}", Divider)
ElseIf Adder >= 70 Then
Console.WriteLine("Your average Grade is a C, and your average in numbers is {0}", Divider)
ElseIf Adder >= 60 Then
Console.WriteLine("Your average Grade is a D, and your average in numbers is {0}", Divider)
ElseIf Adder < 60 Then
Console.WriteLine("Your average Grade is an F, and your average in numbers is {0}", Divider)
End If
Here you go. I just switched the Divider
with Adder
and erased some non-essentiel stuff.
Hope this is what you are looking for.
Upvotes: 0