Click here to Skip to main content
15,889,876 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
The problem is in the output.The output of grade is wrong.Then in the best and worst preformed units does bring the ouput .Rewrite the code in vb so as i can know the problem in the code.

What I have tried:

VB
Module MODULE2
    Sub main()
        Console.WriteLine("operatorclass")
        Dim age As Integer
        Dim Fname As String
        Dim oop, pda As Integer
        Dim Total, Average, grade As Double
        Console.WriteLine("Please write your FName?")
        Fname = Console.ReadLine()
        Console.Write("Age")
        age = Console.ReadLine()
        Console.WriteLine("oop")
        oop = Console.ReadLine()
        Console.WriteLine("pda")
        pda = Console.ReadLine()
        Total = oop + pda
        Average = Total / 2
        Console.WriteLine("Total is " & Total & ", Average is " & Average)
        Console.WriteLine("---------")

       
        If (Average >= 70) Then
            Console.WriteLine("A")
        ElseIf (Average >= 60 - 69) Then
            Console.WriteLine("B")
        ElseIf (Average > 50 - 59) Then
            Console.WriteLine("C")
        ElseIf (Average >= 40 - 49) Then
            Console.WriteLine("D")
        ElseIf (Average <= 39) Then
            Console.WriteLine("FAIL")
        End If
        Console.WriteLine("grade")
        Console.WriteLine("Age bracket")
        If (age < 16) Then
            Console.WriteLine("Teenager")
        ElseIf (age >= 17 - 35) Then
            Console.WriteLine("Youth")
        ElseIf (age >= 36) Then
            Console.WriteLine("Adult")

        End If
        Console.WriteLine("Best performed unit")
        If (oop > pda) Then
            Console.WriteLine("oop")
        Else
            Console.WriteLine("oop")
        End If

        Console.WriteLine("worst performed unit")
        If (oop < pda) Then
            Console.WriteLine("pda")
        Else
            Console.WriteLine("pda")
        End If
        Console.ReadKey()
    End Sub
End Module
Posted
Updated 17-Oct-19 9:53am
v2

A simpler way:
VB
If (age < 16) Then
    Console.WriteLine("Teenager")
ElseIf (age < 36) Then ' you already know it is greater than 16
    Console.WriteLine("Youth")
Else                   ' so it must be 36 or greater
    Console.WriteLine("Adult")
End If
 
Share this answer
 
You probably expect to use a range, but in fact it is a subtraction, e.g. in this line:
ElseIf (age >= 17 - 35) Then

It should be:
ElseIf (age >= 17 And age <= 35) Then

The Select Case statement supports ranges, see answers here: Number range in IF statements - Stack Overflow[^]
 
Share this answer
 
v2
Your problem is :
VB
If (Average >= 70) Then
    Console.WriteLine("A")
ElseIf (Average >= 60 - 69) Then ' 60 - 69 is a subtraction and its value is 9
    Console.WriteLine("B")
ElseIf (Average > 50 - 59) Then ' Idem
    Console.WriteLine("C")
ElseIf (Average >= 40 - 49) Then ' Idem
    Console.WriteLine("D")
ElseIf (Average <= 39) Then
    Console.WriteLine("FAIL")
End If

So your code is like :
VB
If (Average >= 70) Then
    Console.WriteLine("A")
ElseIf (Average >= 9) Then
    Console.WriteLine("B")
ElseIf (Average > 9) Then
    Console.WriteLine("C")
ElseIf (Average >= 9) Then
    Console.WriteLine("D")
ElseIf (Average <= 39) Then
    Console.WriteLine("FAIL")
End If

The correct way to code this is to take advantage of the fact that when you reach a given condition, all previous conditions have failed
VB
If (Average >= 70) Then
    Console.WriteLine("A")
ElseIf (Average >= 60) Then ' when you are here, you already know that (Average >= 70) failed, thus (Average < 70)
    Console.WriteLine("B")
ElseIf (Average > 50) Then ' Idem
    Console.WriteLine("C")
ElseIf (Average >= 40) Then ' Idem
    Console.WriteLine("D")
Else ' all previous conditions failed, thus (Average < 40)
    Console.WriteLine("FAIL")
End If
 
Share this answer
 
How about..

VB
Sub main()
        Console.WriteLine("operatorclass")

        Dim age As Integer
        Dim Fname As String
        Dim oop, pda As Integer
        Dim Total, Average As Double
        Dim grade As String

        Console.WriteLine("Please write your FName?")
        Fname = Console.ReadLine()
        Console.Write("Age")
        age = Console.ReadLine()
        Console.WriteLine("oop")
        oop = Console.ReadLine()
        Console.WriteLine("pda")
        pda = Console.ReadLine()
        Total = oop + pda
        Average = Total / 2
        Console.WriteLine("Total is " & Total & ", Average is " & Average)
        Console.WriteLine("---------")

        grade = "Fail"
        Select Case Average
            Case <= 49
                grade = "D"
            Case <= 59
                grade = "C"
            Case <= 69
                grade = "B"
            Case > 60
                grade = "A"
        End Select

        Console.WriteLine("grade:" & grade)


        Console.WriteLine("Age bracket")
        Select Case age
            Case < 16
                Console.WriteLine("Teenager")
            Case <= 35
                Console.WriteLine("Youth")
            Case > 35
                Console.WriteLine("Adult")
        End Select
        Console.WriteLine("Best performed unit")
        If (oop > pda) Then
            Console.WriteLine("oop")
        Else
            Console.WriteLine("oop")
        End If

        Console.WriteLine("worst performed unit")
        If (oop < pda) Then
            Console.WriteLine("pda")
        Else
            Console.WriteLine("pda")
        End If
        Console.ReadKey()
    End Sub
 
Share this answer
 
How about..

VB
Sub main()
        Console.WriteLine("operatorclass")

        Dim age As Integer
        Dim Fname As String
        Dim oop, pda As Integer
        Dim Total, Average As Double
        Dim grade As String

        Console.WriteLine("Please write your FName?")
        Fname = Console.ReadLine()
        Console.Write("Age")
        age = Console.ReadLine()
        Console.WriteLine("oop")
        oop = Console.ReadLine()
        Console.WriteLine("pda")
        pda = Console.ReadLine()
        Total = oop + pda
        Average = Total / 2
        Console.WriteLine("Total is " & Total & ", Average is " & Average)
        Console.WriteLine("---------")

        grade = "Fail"
        Select Case Average
            Case <= 49
                grade = "D"
            Case <= 59
                grade = "C"
            Case <= 69
                grade = "B"
            Case > 60
                grade = "A"
        End Select

        Console.WriteLine("grade:" & grade)


        Console.WriteLine("Age bracket")
        Select Case age
            Case < 16
                Console.WriteLine("Teenager")
            Case <= 35
                Console.WriteLine("Youth")
            Case > 35
                Console.WriteLine("Adult")
        End Select
        Console.WriteLine("Best performed unit")
        If (oop > pda) Then
            Console.WriteLine("oop")
        Else
            Console.WriteLine("oop")
        End If

        Console.WriteLine("worst performed unit")
        If (oop < pda) Then
            Console.WriteLine("pda")
        Else
            Console.WriteLine("pda")
        End If
        Console.ReadKey()
    End Sub
 
Share this answer
 
Comments
Richard Deeming 18-Oct-19 11:00am    
You've posted the same answer twice.
Robert Bettinelli 11-Nov-19 11:20am    
oops posted twice.. Oh well.. Use the better of the two. :-)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900