Skip to content

Commit 09db78f

Browse files
authored
Add solution for Challenge 3 by WHFF521 (#1889)
Auto-merged after 2 days with all checks passing. PR: #1889 Author: @WHFF521
1 parent 6f608ad commit 09db78f

1 file changed

Lines changed: 71 additions & 0 deletions

File tree

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package main
2+
3+
import "fmt"
4+
5+
type Employee struct {
6+
ID int
7+
Name string
8+
Age int
9+
Salary float64
10+
}
11+
12+
type Manager struct {
13+
Employees []Employee
14+
}
15+
16+
// AddEmployee adds a new employee to the manager's list.
17+
func (m *Manager) AddEmployee(e Employee) {
18+
// TODO: Implement this method
19+
m.Employees = append(m.Employees,e)
20+
}
21+
22+
// RemoveEmployee removes an employee by ID from the manager's list.
23+
func (m *Manager) RemoveEmployee(id int) {
24+
// TODO: Implement this method
25+
var result []Employee
26+
for _,e :=range(m.Employees){
27+
if e.ID!=id{
28+
result = append(result,e)
29+
}
30+
}
31+
m.Employees = result
32+
}
33+
34+
// GetAverageSalary calculates the average salary of all employees.
35+
func (m *Manager) GetAverageSalary() float64 {
36+
// TODO: Implement this method
37+
length := len(m.Employees)
38+
if length==0 {
39+
return 0
40+
}
41+
var sum float64
42+
for _,e:=range(m.Employees){
43+
sum += e.Salary
44+
}
45+
return sum / float64(length)
46+
}
47+
48+
// FindEmployeeByID finds and returns an employee by their ID.
49+
func (m *Manager) FindEmployeeByID(id int) *Employee {
50+
// TODO: Implement this method
51+
for i:= range(m.Employees){
52+
if m.Employees[i].ID == id {
53+
return &m.Employees[i]
54+
}
55+
}
56+
return nil
57+
}
58+
59+
func main() {
60+
manager := Manager{}
61+
manager.AddEmployee(Employee{ID: 1, Name: "Alice", Age: 30, Salary: 70000})
62+
manager.AddEmployee(Employee{ID: 2, Name: "Bob", Age: 25, Salary: 65000})
63+
manager.RemoveEmployee(1)
64+
averageSalary := manager.GetAverageSalary()
65+
employee := manager.FindEmployeeByID(2)
66+
67+
fmt.Printf("Average Salary: %f\n", averageSalary)
68+
if employee != nil {
69+
fmt.Printf("Employee found: %+v\n", *employee)
70+
}
71+
}

0 commit comments

Comments
 (0)