program ideone;
{$MODE OBJFPC}{$LONGSTRINGS ON}
const
BET_NUMBERS_COUNT = 6;
type
TBet = object
private
FNumbers: array [0 .. BET_NUMBERS_COUNT - 1] of UInt8;
FDate: TDate;
private
function GetNumber(AIndex: Integer): UInt8;
procedure SetNumber(AIndex: Integer; ANumber: UInt8);
procedure SwapNumbers(AIndex: Integer);
public
function Init(): TBet;
public
function Fill(ANumbers: array of UInt8): TBet;
function Sort(): TBet;
function Print(): TBet;
public
property Number[AIndex: Integer]: UInt8 read GetNumber write SetNumber;
property Date: TDate read FDate write FDate;
end;
function TBet.Init(): TBet;
begin
FillChar(FNumbers[0], BET_NUMBERS_COUNT, 0);
FDate := 0;
Result := Self;
end;
function TBet.GetNumber(AIndex: Integer): UInt8;
begin
Result := FNumbers[AIndex];
end;
procedure TBet.SetNumber(AIndex: Integer; ANumber: UInt8);
begin
FNumbers[AIndex] := ANumber;
end;
procedure TBet.SwapNumbers(AIndex: Integer); inline;
begin
PUInt16(@FNumbers[AIndex])^ := Swap(PUInt16(@FNumbers[AIndex])^);
end;
function TBet.Fill(ANumbers: array of UInt8): TBet;
begin
FNumbers := ANumbers;
Result := Self;
end;
function TBet.Sort(): TBet;
var
int1, int2: Integer;
begin
for int1 := 0 to BET_NUMBERS_COUNT - 2 do
for int2 := 0 to BET_NUMBERS_COUNT - 2 do
if FNumbers[int2] > FNumbers[int2 + 1] then
SwapNumbers(int2);
Result := Self;
end;
function TBet.Print(): TBet;
var
intNumber: UInt8;
begin
for intNumber in FNumbers do
Write(intNumber:3);
WriteLn();
Result := Self;
end;
var
Bet: TBet;
begin
Bet.Init().Fill([3, 2, 4, 6, 1, 5]).Print().Sort().Print();
ReadLn();
end.