Выработка рекомендаций по защите оператора ЭВМ от воздействия СДЯВ

Страница: 4/5

TForm1 *Form1;

int G,L,V;

float k1,k2,k3,k4,k5,k6,D,ti;

// Таблица: вертикальная устойчивость атмосферы

float atm[3][3] = {{0.03, 0.15, 0.8},{1, 1/3.0, 1/9.0},{2, 1.5, 1.5}};

// Таблица рассчета k5 в зависимости от скорости ветра

float velocity[6] = {1, 0.7, 0.55, 0.43, 0.37, 0.32};

// Таблица рассчета k3 в зависимости от вида хранилища

float store[2] = {1, 2/3.0};

// Таблица рассчета k4 в зависимости от вида местности

float place[2] = {1, 1/3.0};

// Таблица рассчета времени испарения СДЯВ в зависимости от типа СДЯВ и вида

// хранилища

float timeOF[4][2] = {{1.3, 22},{1.2, 20},{1.3, 20},{1.4, 23}};

// Таблица: токсические свойства СДЯВ

float prop[4][2] = {{0.2, 360},{0.01, 60},{0.05, 10},{0.4, 50}};

//Функция конструтор

fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//Функция вывода рассчетных значений

void setLabel(float what, TLabel *a, char *b)

{

int i,l;

AnsiString bff;

bff = FormatFloat("0.00", what);

i = a->Caption.Pos(": ");

l = a->Caption.Length() - i;

a->Caption = a->Caption.Delete(i+2, l);

a->Caption = a->Caption + bff + b;

}

// Функции пересчета коэффициентов и значений

void setTI()

{

ti = timeOF[Form1->ComboBox1->ItemIndex][Form1->ComboBox4->ItemIndex];

}

void setD()

{

D = prop[Form1->ComboBox1->ItemIndex][0]*prop[Form1->ComboBox1->ItemIndex][1];

D = D*60/100000.0;

}

void setk1k2k6()

{

k1 = atm[0][Form1->ComboBox2->ItemIndex];

k2 = atm[1][Form1->ComboBox2->ItemIndex];

k6 = atm[2][Form1->ComboBox2->ItemIndex];

}

void setk5V()

{

k5 = velocity[Form1->ComboBox3->ItemIndex];

V = Form1->ComboBox3->ItemIndex + 1;

}

void setk3()

{

k3 = store[Form1->ComboBox4->ItemIndex];

}

void setk4()

{

k4 = place[Form1->ComboBox4->ItemIndex];

}

// Функция вычисления параметров зоны заражения, время подхода зараженного

// воздуха и время поражающего действия СДЯВ

void setZone()

{

float h,w,s,t1,t2;

G = Form1->Edit2->Text.ToInt();

h = k2*k3*k4*34.2*pow(pow(G/(D*V), 2), 1/3.0);

setLabel(h, Form1->Height, " м");

w = k1*h;

setLabel(w, Form1->Width, " м");

s = 0.5*h*w;

setLabel(s, Form1->Square, " м2");

L = Form1->Edit1->Text.ToInt();

t1 = L/(k6*V);

setLabel(t1, Form1->timeA, " c");

t2 = (ti*k5);

setLabel(t2, Form1->timeB, " час");

}

// Контроль ввода количеста СДЯВ и расстояния до объекта экономики

// (разрешен ввод только целых чисел) и пересчет параметров

void fastcall TForm1::Edit1Change(TObject *Sender)

{

char c[4];

strcpy(c,Edit1->Text.c str());

int i=0;

while(c[i]!=0){

if((c[i]>'9')||(c[i]<'0'))

strcpy(c+i,c+i+1);

else

i++;

}

Edit1->Text=c;

if (Edit1->Text != "")

setZone();

}

void fastcall TForm1::Edit2Change(TObject *Sender)

{

char c[4];

strcpy(c,Edit2->Text.c str());

int i=0;

while(c[i]!=0){

if((c[i]>'9')||(c[i]<'0'))

strcpy(c+i,c+i+1);

else

i++;

}

Edit2->Text=c;

if (Edit2->Text != "")

setZone();

}

// Функции вызывающие функции пересчета коэффициентов, в зависимости от

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

void fastcall TForm1::ComboBox1Change(TObject *Sender)

{

setD();

setTI();

setZone();

}

void fastcall TForm1::ComboBox2Change(TObject *Sender)

{

setk1k2k6();

setZone();

}

void fastcall TForm1::ComboBox3Change(TObject *Sender)

Реферат опубликован: 4/04/2006