MODULE Main:
DECLARE Names as an array of strings with size 10
DECLARE Marks as an array of integers with size 10
DISPLAY "Please input the names and marks for the class:"
FOR i = 1 to 10 DO:
DISPLAY "Name " + i + ":"
INPUT Names[i]
VALIDATE Names[i] is not empty and is a string
DISPLAY "Mark " + i + ":"
INPUT Marks[i]
WHILE Marks[i] < 0 OR Marks[i] > 100 DO:
DISPLAY "Invalid mark input. Please input a mark between 0 and 100:"
INPUT Marks[i]
END WHILE
END FOR
DISPLAY "CLASS REPORT"
DISPLAY "NAME\tMARK ACHIEVED\tCATEGORY"
FOR i = 1 to 10 DO:
DISPLAY Names[i] + "\t" + Marks[i] + "\t" + CALCULATE_CATEGORY(Marks[i])
END FOR
DISPLAY "AVERAGE CLASS MARK: " + CALCULATE_AVERAGE(Marks) + "%"
HIGH(Names, Marks)
LOW(Names, Marks)
END MODULE
MODULE CALCULATE_CATEGORY(mark):
IF mark >= 75 THEN:
RETURN "Distinction"
ELSE IF mark < 50 THEN:
RETURN "Fail"
ELSE:
RETURN "Pass"
END IF
END MODULE
MODULE CALCULATE_AVERAGE(marks):
DECLARE sum as integer
DECLARE average as float
FOR i = 1 to 10 DO:
sum = sum + marks[i]
END FOR
average = sum / 10.0
RETURN average
END MODULE
MODULE HIGH(names, marks):
DECLARE highest as integer
DECLARE high_name as string
highest = marks[1]
FOR i = 2 to 10 DO:
IF marks[i] > highest THEN:
highest = marks[i]
high_name = names[i]
END IF
END FOR
DISPLAY "HIGHEST MARK: " + high_name
END MODULE
MODULE LOW(names, marks):
DECLARE lowest as integer
DECLARE low_name as string
lowest = marks[1]
FOR i = 2 to 10 DO:
IF marks[i] < lowest THEN:
lowest = marks[i]
low_name = names[i]
END IF
END FOR
DISPLAY "LOWEST MARK: " + low_name
END MODULE