Смекни!
smekni.com

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

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

__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)

{

setk5V();

setZone();

}

void __fastcall TForm1::ComboBox4Change(TObject *Sender)

{

setk3();

setTI();

setZone();

}

void __fastcall TForm1::ComboBox5Change(TObject *Sender)

{

setk4();

setZone();

}

// Начальная инициализация всех значений

void __fastcall TForm1::FormCreate(TObject *Sender)

{

ComboBox1->ItemIndex=0;

ComboBox2->ItemIndex=0;

ComboBox3->ItemIndex=0;

ComboBox4->ItemIndex=0;

ComboBox5->ItemIndex=0;

setTI();

setD();

setk1k2k6();

setk5V();

setk3();

setk4();

setZone();

}

//Обработка выхода из программы

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if (Application->MessageBox("Вы действительно хотите закончить работу с
программой?", "Завершение работы", MB_YESNO + MB_ICONQUESTION +
MB_DEFBUTTON1) == IDYES)

exit (0);

}

// Сохранение результатов работы программы

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if(Save->Execute()){

FILE*output = fopen(Save->FileName.c_str(),"w");

if(output == NULL){

Application->MessageBox("Ошибка!", "Ошибка записи файла",
MB_OK+MB_ICONERROR);

return;

}

fprintf(output, "%s&bsol;n", Form1->Height->Caption);

fprintf(output, "%s&bsol;n", Form1->Width->Caption);

fprintf(output, "%s&bsol;n", Form1->Square->Caption);

fprintf(output, "%s&bsol;n", Form1->timeA->Caption);

fprintf(output, "%s&bsol;n", Form1->timeB->Caption);

fclose(output);

}

}