program SortByNumber;
const
N = 7;
var
Arr : array[1..N] of string;
i, j : integer;
num1, num2 : integer;
function ExtractNumber(s : string) : integer;
var
p : integer;
numStr : string;
begin
{ find last space }
p := Length(s);
while (p > 0) and (s[p] <> ' ') do
Dec(p);
numStr := Copy(s, p + 1, Length(s) - p);
Val(numStr, ExtractNumber);
end;
procedure Swap(var a, b : string);
var
t : string;
begin
t := a;
a := b;
b := t;
end;
begin
Arr[1] := 'Python 4';
Arr[2] := 'C 9';
Arr[3] := 'C++ 5';
Arr[4] := 'C# 6';
Arr[5] := 'Java 1';
Arr[6] := 'PHP 7';
Arr[7] := 'Go 2';
{ Bubble sort by numeric value }
for i := 1 to N - 1 do
for j := i + 1 to N do
begin
num1 := ExtractNumber(Arr[i]);
num2 := ExtractNumber(Arr[j]);
if num1 > num2 then
Swap(Arr[i], Arr[j]);
end;
{ Print result }
for i := 1 to N do
writeln(Arr[i]);
end.
(*
run:
Java 1
Go 2
Python 4
C++ 5
C# 6
PHP 7
C 9
*)