Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ ВОРД.docx
Скачиваний:
69
Добавлен:
12.06.2015
Размер:
498.09 Кб
Скачать

§ 4.2. Листинг программы для расчета букмекерских «вилок»

Текст модуля формы

unit UnitMain;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls;

type

TMainForm = class(TForm)

MainMenu: TMainMenu;

DoubleIssue: TMenuItem;

TrippleIssue: TMenuItem;

Label1: TLabel;

EditBank: TEdit;

Label2: TLabel;

Label3: TLabel;

LabelX: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

EditCoef1: TEdit;

EditCoefX: TEdit;

EditCoef2: TEdit;

EditBet1: TEdit;

EditBetX: TEdit;

EditBet2: TEdit;

EditProfit1: TEdit;

EditProfitX: TEdit;

EditProfit2: TEdit;

LabelCalc: TLabel;

Label4: TLabel;

LabelMargin: TLabel;

procedure TrippleIssueClick(Sender: TObject);

procedure DoubleIssueClick(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure LabelCalcClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

implementation

uses Math;

var

IsDoubleForks: boolean; //указывает на выбранное количество исходов в расчете

{$R *.dfm}

procedure TMainForm.TrippleIssueClick(Sender: TObject);

begin

IsDoubleForks := False;

//изменяем видимость полей

LabelX.Visible := True;

EditCoefX.Visible := True;

EditBetX.Visible := True;

EditProfitX.Visible := True;

//обнуляем поля

EditBet1.Text := '';

EditBet2.Text := '';

EditBetX.Text := '';

EditProfit1.Text := '';

EditProfit2.Text := '';

EditProfitX.Text := '';

LabelMargin.Caption := '0%';

end;

procedure TMainForm.DoubleIssueClick(Sender: TObject);

begin

IsDoubleForks := True;

//изменяем видимость полей

LabelX.Visible := False;

EditCoefX.Visible := False;

EditBetX.Visible := False;

EditProfitX.Visible := False;

//обнуляем поля

EditBet1.Text := '';

EditBet2.Text := '';

EditBetX.Text := '';

EditProfit1.Text := '';

EditProfit2.Text := '';

EditProfitX.Text := '';

LabelMargin.Caption := '0%';

end;

procedure TMainForm.FormActivate(Sender: TObject);

begin

DoubleIssueClick(nil);

//значения по умолчанию

EditBank.Text := '100';

EditCoef1.Text := '1,00';

EditCoef2.Text := '1,00';

EditCoefX.Text := '1,00';

end;

procedure TMainForm.LabelCalcClick(Sender: TObject);

var

coef1: double;

coef2: double;

coefX: double;

bank: double;

bet1: double;

bet2: double;

betX: double;

betsum: double;

profit1: double;

begin

//проверка ввода валидных данных в поля банка и коэффициентов

try

bank := StrToFloat(EditBank.Text);

except

MessageBox(Handle ,'В поле "Банк" введены неверные данные!', 'Ошибка ввода данных', MB_OK);

Exit;

end;

try

begin

coef1 := StrToFloat(EditCoef1.Text);

coef2 := StrToFloat(EditCoef2.Text);

if (not IsDoubleForks) then

coefX := StrToFloat(EditCoefX.Text);

end;

except

MessageBox(Handle ,'В поле "Коэффициент" введены неверные данные!', 'Ошибка ввода данных', MB_OK);

Exit;

end;

//рассчет для двойного исхода

if (IsDoubleForks) then

begin

bet1 := Round((bank*coef2/(coef1+coef2))*100)/100;

EditBet1.Text := FloatToStr(bet1);

bet2 := Round((bank*coef1/(coef1+coef2))*100)/100;

EditBet2.Text := FloatToStr(bet2);

betsum := bet1 + bet2;

profit1 := coef1*bet1 - betsum;

EditProfit1.Text := FloatToStr(Round((profit1)*100)/100);

EditProfit2.Text := FloatToStr(Round((coef2*bet2 - betsum)*100)/100);

LabelMargin.Caption := FloatToStr(Round((100*profit1/bank)*100)/100) + '%';

end

else //рассчет для тройного исхода

begin

bet1 := Round((bank*coef2*coefX/(coef1*coef2+coef1*coefX+coef2*coefX))*100)/100;

EditBet1.Text := FloatToStr(bet1);

bet2 := Round((bank*coef1*coefX/(coef1*coef2+coef1*coefX+coef2*coefX))*100)/100;

EditBet2.Text := FloatToStr(bet2);

betX := Round((bank*coef1*coef2/(coef1*coef2+coef1*coefX+coef2*coefX))*100)/100;

EditBetX.Text := FloatToStr(betX);

betsum := bet1 + bet2 + betX;

profit1 := coef1*bet1 - betsum;

EditProfit1.Text := FloatToStr(Round((profit1)*100)/100);

EditProfit2.Text := FloatToStr(Round((coef2*bet2 - betsum)*100)/100);

EditProfitX.Text := FloatToStr(Round((coefX*betX - betsum)*100)/100);

LabelMargin.Caption := FloatToStr(Round((100*profit1/bank)*100)/100) + '%';

end;

end;

end.