unit Vraag3_UXXXX;
{Sleutel jou eksamennommer hier in}

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls;


type

  TfrmVraag3 = class(TForm)
    redAfvoer: TRichEdit;
    bmbVerlaat: TBitBtn;
    bmbRaai: TBitBtn;
    procedure bmbVerlaatClick(Sender: TObject);
    procedure bmbRaaiClick(Sender: TObject);
  private
    { Private declarations }

     arrGebruiker   : Array[1..5] of String;
     iTotPunte, iAantal  : Integer;
  public
    { Public declarations }
  end;

var
  frmVraag3: TfrmVraag3;
  arrPunte : Array[1..20] of string =
       ('12:40','20:0','13:0','3:0','15:0','9:0', '19:50','10:0',
        '8:90','11:0','1:0', '5:30','16:0','14:100','4:0','17:0',
        '18:20','6:0','7:0','2:20');

implementation

{$R *.dfm}

procedure TfrmVraag3.bmbVerlaatClick(Sender: TObject);
begin
 Application.Terminate;
end;

procedure TfrmVraag3.bmbRaaiClick(Sender: TObject);
var
    a,b,c,iKeuse : integer;
    bGevind        : boolean;
    sTemp          : string;
begin
   iTotPunte := 0;
   iAantal := 20;
   for a := 1 to 5 do
    begin
       iKeuse := StrToInt(InPutBox('SKATTEJAG', 'Sleutel keuse '+ intToStr(a) + ' in', ''));
       if (iKeuse < 1) OR (iKeuse > 20) then
         begin
           arrGebruiker[a] := IntToStr(iKeuse) + ' ONGELDIGE NOMMER';
           dec(iTotPunte, 5);
         end
        else
         begin
           bGevind := False;
           b := 0;
           while NOT bGevind AND (b <= iAantal) do
           begin
            inc(b, 1);
            if pos(IntToStr(iKeuse)+':', arrPunte[b]) = 1
             then
              begin
                bGevind := true;
                sTemp :=  arrPunte[b];
                arrGebruiker[a] := sTemp;
                delete(sTemp, 1, pos(':',sTemp));
                inc(iTotPunte, StrToInt(sTemp));

                for c := b to iaantal-1 do
                    arrPunte[c] := arrPunte[c+1];

                dec(iAantal, 1);
              end;
        end;//while
       if not bGevind
        then
         begin
            arrGebruiker[a] := IntToStr(iKeuse) + ' ALREEDS GEKIES';
            dec(iTotPunte, 5);
         end;
       end; // if
    end;//for

    redAfvoer.Lines.Clear;
    redAfvoer.Lines.Add('Nommers nie gekies nie');
    redAfvoer.Lines.Add('=====================');
    for a := 1 to iAantal do
     redAfvoer.Lines.Add(arrPunte[a]);

    redAfvoer.Lines.Add(' ');
    redAfvoer.Lines.Add('Deelnemer se keuses');
    redAfvoer.Lines.Add('===================');
    for a := 1 to 5 do
     redAfvoer.Lines.Add(arrGebruiker[a]);

    if iTotPunte < 0 then
        iTotPunte := 0;
    redAfvoer.Lines.Add('Punte: ' + intToStr(iTotPunte));

    case iTotPunte of
      0        : redAfvoer.Lines.Add('Geen prys ');
      1..100   : redAfvoer.Lines.Add('Prys: Teddiebeer');
      101..200 : redAfvoer.Lines.Add('Prys: Visstok');
      else
        redAfvoer.Lines.Add('Prys: Gimnasium Lidmaatskap');
    end;
end;

end.
