Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
58
Task/Top-rank-per-group/PureBasic/top-rank-per-group.basic
Normal file
58
Task/Top-rank-per-group/PureBasic/top-rank-per-group.basic
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
Structure Employees
|
||||
Name$
|
||||
ID$
|
||||
Salary.i
|
||||
Department$
|
||||
EndStructure
|
||||
|
||||
Procedure displayTopEarners(List MyEmployees.Employees(), n)
|
||||
Protected filename$ = OpenFileRequester("Top rank per group", "DataFile.txt", "", 0)
|
||||
If ReadFile(0, filename$)
|
||||
Protected InData.Employees, txt.s, MaxNameLength
|
||||
|
||||
While Eof(0) = 0
|
||||
AddElement(MyEmployees())
|
||||
txt = ReadString(0)
|
||||
With MyEmployees()
|
||||
\Name$ = StringField(txt, 1, ",")
|
||||
\ID$ = StringField(txt, 2, ",")
|
||||
\Salary = Val(StringField(txt, 3, ","))
|
||||
\Department$ = StringField(txt, 4, ",")
|
||||
If Len(\Name$) > MaxNameLength: MaxNameLength = Len(\Name$): EndIf
|
||||
EndWith
|
||||
Wend
|
||||
CloseFile(0)
|
||||
Else
|
||||
MessageRequester("Information", "Couldn't open the file!")
|
||||
End
|
||||
EndIf
|
||||
|
||||
If OpenConsole()
|
||||
Protected OldDepartment$, count
|
||||
|
||||
SortStructuredList(MyEmployees(), #PB_Sort_Descending, OffsetOf(Employees\Salary), #PB_Sort_integer)
|
||||
SortStructuredList(MyEmployees(), #PB_Sort_Ascending, OffsetOf(Employees\Department$), #PB_Sort_String)
|
||||
ForEach MyEmployees()
|
||||
With MyEmployees()
|
||||
If \Department$ <> OldDepartment$
|
||||
If OldDepartment$ <> ""
|
||||
PrintN(#CRLF$)
|
||||
EndIf
|
||||
OldDepartment$ = \Department$
|
||||
PrintN("Department " + \Department$ + #CRLF$ + "---------------")
|
||||
PrintN(LSet("Name", MaxNameLength + 3) + LSet("ID", 7) + LSet("Salary", 7))
|
||||
count = 0
|
||||
EndIf
|
||||
count + 1
|
||||
If count <= n
|
||||
PrintN(LSet(\Name$, MaxNameLength + 1) + " " + RSet(\ID$, 7) + " $" + Str(\Salary))
|
||||
EndIf
|
||||
EndWith
|
||||
Next
|
||||
PrintN(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
|
||||
EndIf
|
||||
EndProcedure
|
||||
|
||||
NewList MyEmployees.Employees()
|
||||
|
||||
displayTopEarners(MyEmployees(), 3)
|
||||
Loading…
Add table
Add a link
Reference in a new issue