Разработка сценариев и реакций на события согласно сценариям.

Нажатие на кнопку “Решить”.

При нажатии на кнопку “Решить” происходит:

а) проверка правильности исходных данных, и если данные не соответствуют типу (или не введен какой либо из коэффициентов), то выводится сообщение «Все коэффициенты системы должны быть числами», как показано на рисунке В.1;

Разработка сценариев и реакций на события согласно сценариям. - student2.ru

Рисунок В.1

б) решение системы уравнений (после решения отбрасываются все ответы, где Разработка сценариев и реакций на события согласно сценариям. - student2.ru );

в) вывод ответа в зависимости от количества найденных в пункте б решений. Если найдено 2 решения, то выводятся Разработка сценариев и реакций на события согласно сценариям. - student2.ru , если найдено одно решение - Разработка сценариев и реакций на события согласно сценариям. - student2.ru , если решений нет, то выводится сообщение «Система уравнений не имеет решения !»

Текст сценария:

void __fastcall TMainForm::BtRasschetClick(TObject *Sender)

{

MResult->Clear();

double in_a = 0, in_b = 0, in_c = 0, in_d = 0;

try

{

in_a = StrToFloat(Eda->Text);

in_b = StrToFloat(Edb->Text);

in_c = StrToFloat(Edc->Text);

in_d = StrToFloat(Edd->Text);

}

catch (...)

{

ShowMessage ("Все коэффициенты системы уравнений должны быть числами !");

MResult->Lines->Add("Все коэффициенты системы уравнений должны быть числами !");

return;

}

long double resX1,resX2,resY1,resY2;

int reslt = solution_equation(in_a, in_b, in_c, in_d, resX1, resX2, resY1, resY2);

if (reslt == SQ_SUCCES_TWO_ROOT)

{

MResult->Lines->Add("Cистема имеет 2 решения:");

MResult->Lines->Add("x1 = " + FloatToStr(resX1) + "; y1 = "+ FloatToStr(resY1));

MResult->Lines->Add("x2 = " + FloatToStr(resX2) + "; y2 = "+ FloatToStr(resY2));

}

if (reslt == SQ_SUCCES_ALONE_ROOT)

{

MResult->Lines->Add("Cистема имеет 1 решение:");

MResult->Lines->Add("x = " + FloatToStr(resX1) + "; y = "+ FloatToStr(resY1));

}

if (reslt == SQ_ERROR_DIV_BY_ZERO) MResult->Lines->Add("Система уравнений не имеет решения из-за деления на 0!");

if (reslt == SQ_ERROR_NO_ROOT) MResult->Lines->Add("Система уравнений не имеет решения !"); }

Массовая обработка данных.

При нажатии первой кнопки “Выбрать” открывается форма для выбора файла с входными данными, как показано на рисунке В.2.

Разработка сценариев и реакций на события согласно сценариям. - student2.ru

Рисунок В.2

Текст сценария:

void __fastcall TFormMas::SBInpClick(TObject *Sender)

{

if (OpenDialog1->Execute())

{

if(FileExists(OpenDialog1->FileName))

{

NameFileOpen = OpenDialog1->FileName;

}

else

ShowMessage("Такого файла не существует !");

}

}

При нажатии второй кнопки “выбрать” открывается форма для выбора файла с выходными данными, как показано на рисунке В.3.

Разработка сценариев и реакций на события согласно сценариям. - student2.ru

Рисунок В.3

Текст сценария:

void __fastcall TFormMas::SBOutClick(TObject *Sender)

{

if (SaveDialog1->Execute())

{

NameFileSave = SaveDialog1->FileName;

}

}

При выборе кнопки решить происходит проверка входных данных, и если они не соответствуют заданному типу, то выводится сообщение « Указаны неправильные файлы данных !», как показано на рисунке В.4.

Разработка сценариев и реакций на события согласно сценариям. - student2.ru

Рисунок В.4

Если не выбраны файл с исходными данными или файл для сохранения результатов, то выводится сообщение «Указаны не все файлы данных !», как показано на рисунке В.5.

Разработка сценариев и реакций на события согласно сценариям. - student2.ru

Рисунок В.5

Текст сценария.

void __fastcall TFormMas::SBRasschetClick(TObject *Sender)

{

try

{

if ((NameFileSave != "")&&(NameFileOpen != "")) solution_with_files();

else ShowMessage("Выбраны не все файлы данных !");

}

catch(...)

{

ShowMessage("Указаны неправильные файлы данных !");

return;

}

}

Приложение Г

Наши рекомендации