-
Notifications
You must be signed in to change notification settings - Fork 0
/
course.rb
89 lines (72 loc) · 1.39 KB
/
course.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
class Result
attr_accessor :per, :stu_id, :marks, :id, :sub_topper, :topper, :sub_topper_id, :high_per
@@id = 0
@@sub_topper = [0,0,0,0,0,0,0,0]
@@sub_topper_id = [0,0,0,0,0,0,0,0]
@@topper = 0
@@high_per = 0.0
def initialize(name, marks)
@@id+=1
@stu_id = @@id
@name = name
@marks = marks
end
# def set_marks()
# @marks = []
# i=0
# puts "Enter marks"
# while i<8
# @marks[i] = gets.chomp.to_i
# i+=1
# end
# end
def percentage
ct = 0.0
@marks.each do |a|
ct += a
end
@per = ct/8.0
end
def self.sub_hm(stu)
stu.each do |ele|
i=0
while i<8
if ele.marks[i]>@@sub_topper[i]
@@sub_topper[i] = ele.marks[i]
@@sub_topper_id[i] = ele.id
end
i+=1
end
end
for i in 0..7 do
puts "Highest marks in subject #{i+1}: stu_id-#{@@sub_topper_id[i]} marks-#{@@sub_topper[i]}"
end
end
def self.topper(stu)
stu.each do |ele|
if ele.per > @@high_per
@@high_per = ele.per
@@topper = ele.stu_id
end
end
puts "Topper: stu_id-#{@@topper} percentage-#{@@high_per}"
end
end
puts "Enter number of students "
ct = gets.chomp.to_i
obj = []
for i in 0..ct-1 do
p "Enter name of student #{i+1}"
name = gets
marks = []
j=0
puts "Enter marks"
while j<8
marks[j] = gets.chomp.to_i
j+=1
end
obj[i] = Result.new(name, marks)
puts "percentage = #{obj[i].percentage}"
end
Result.topper(obj)
Result.sub_hm(obj)