Jump to content

Top rank per group: Difference between revisions

Line 113:
=={{header|Aime}}==
<lang aime>void
Add_Employee(record employees, text name, text id, integer salary, text department)
text department)
{
employees[name] = list(name, id, salary, department);
Line 120 ⟶ 119:
 
void
collect(record top, record employees)
{
for (, list l; in employees) {
top.v_index(l[3]).v_list(l[2]).link(-1, l);
}
for (text department, index x in top) {
ilist = 0t;
 
x.ucall(l_ucall, 0, l_append, 1, t);
for (, l in employees) {
listif department;(N < ~t.reverse) {
integer i t.erase(N, salary-1);
 
department = r_v_list(top, l[3]);
 
salary = l[2];
i = 0;
while (i < ~department) {
if (__list(department[i])[2] < salary) {
break;
}
i += 1;
}
 
l_l_list(department, i, l);
 
if (~department == N + 1) {
department.delete(N);
}
text top[department)] = t;
}
}
 
void
print_department(text department, list employees)
print(record top)
{
texto_("Department ", department, "\n");
list employees;
 
for (department, employeeslist l in topemployees) {
listo_form(" ~ | ~ | ~\n", l[0], l[1], l[2]);
 
o_("Department ", department, "\n");
 
for (, l in employees) {
o_form(" ~ | ~ | ~\n", l[0], l[1], l[2]);
}
}
}
Line 185 ⟶ 166:
collect(top, employees);
 
print(top.wcall(print_department, 0, 1);
 
return 0;
}</lang>Run as:
<pre>aime rcs/top_rank_per_group c N 5</pre>{{out}}
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.