4.2. Опис імітаційної моделі оптимізації банківської діяльності при використанні інтегрованих банківських послуг
Момот О. М., Брітченко І. Г.
Імітаційна модель оптимізації банківської діяльності при використанні інтегрованих банківських послуг грунтується на значному обсязі розрахунків. Разом з тим відповідні розрахунки не є складними. На практиці відповідна імітаційна модель може бути реалізована шляхом створення математичної програми, котра враховує концептуальні підходи та взаємозв’язки, що описано у попередньому розділі. Доцільним є дотримання певних властивостей відповідної комп’ютерної програми при її побудові та практичній реалізації:
1. Доступність у використанні, тобто програма повинна бути доступною та зрозумілою при використанні будь-яким споживачем, включно споживачів, котрі не володіють навичками професійних програмістів, комп’ютерних фахівців, математиків тощо.
2. Доступність для будь-якої програмної оболонки та можливість використовуватись на різних з точки зору технічних можливостях персональних комп’ютерів.
3. Безпечність для інших програмних продуктів при використанні.
4. Здатність враховувати всі зазначені в попередньому розділі зв’язки та пропорції, а також бути здатною до подальших адаптацій та удосконалень.
5. Займати невеликий обсяг оперативної та звичайної пам’яті комп’ютера при високій швидкості здійснення необхідних розрахунків.
6. Здатність бути прив’язаною до інших програм, наприклад, бухгалтерських, котрі можуть бути джерелом для використання відповідних цифрових даних для розрахунків.
7. Мати невелику вартість створення програми, а також її адаптації, удосконалення або синхронізації з іншими банківськими програмами.
8. Використовувати нескладну, достатньо відому та надійну мову програмування для простоти і надійності її роботи.
Поставлене завдання може бути досягнуто багатьма шляхами. Одним із оптимальних шляхів вирішення завдання є розробка для імітаційної моделі комп’ютерної програми на основі мови програмування С++. Одна із можливих програм, створених нами у відповідності до зазначених, отримала назву: «Імітаційна модель взаємодії основних показників діяльності банку при впровадженні інтегрованих банківських послуг та відповідній маркетинговій стратегії банку», скорочена назва – «Модель впровадження інтегрованих банківських послуг».
Програмне забезпечення імітаційної моделі складається з двох файлів. Перший – ECONOMCPP.doc містить вихідні коди розрахункових формул. Для розрахунку перемінних величин та дій з ними утворено клас T_PARAMETERS. В цьому документі розписано два файли: ECONOM.h і ECONOM.cpp. Перший файл з описом, а другий – з визначенням. Цей файл – головний та не залежить від способів реалізації інтерфейсу, що використовується. Другий файл (UnitMain.doc) – це файл реалізації алгоритмів в інтегрованому графічному середовищі Borland C++ Builder.
Зазначена модель відповідно до концепції, визначеній у попередньому розділі, після вводу певних значень розміру власного капіталу банку (VK), обсягу залучених банком депозитів (DO), обсягом залишків на поточних рахунках (DI), розміром кредитного портфелю певного банку (RK), облікової ставки НБУ (SR), середнього розміру банківських відсотків по депозитам (PDO), середнього розміру банківських відсотків по залишкам на поточних рахунках (PDI), середнього розміру відсотків по кредитам, що надано банком (PK), обраховує вартість просування банківських продуктів до впровадження інтегрованих банківських послуг (VP) із подальшою її фіксацією.
Після розрахунку вартості просування банківських продуктів певного банку вважається, що ця вартість не буде змінюватись, тобто маркетингова стратегія впровадження інтегрованих банківських послуг, з одного боку, не потребує додаткових витрат на просування, а з іншого – не претендує на їх скорочення, але сам розмір зазначених витрат потрібно враховувати при подальших підрахунках.
Після фіксації вартості просування банківських продуктів та додаткового вводу даних про норму резервування НБУ (R), вартість міжбанківських кредитів (VMK), обсягу банківських депозитів, котрі банк планує (або може) мати після впровадження інтегрованих послуг (NDO), потенційних обсягів залишків на поточних рахунках клієнтів (NDI), розміру відсотків для компенсації клієнтам за користування залишками на поточних рахунках (NPDI), обсягу наданих банком міжбанківських кредитів до впровадження інтегрованих послуг (MK), обсягу отриманих банком міжбанківських депозитів до впровадження інтегрованих послуг (MD), запланованого (бажаного або можливого) обсягу наданих банком міжбанківських кредитів після впровадження інтегрованих послуг (NMK), запланованого (бажаного або можливого) обсягу отриманих банком міжбанківських депозитів до впровадження інтегрованих послуг (NMD) та інших параметрів програма обраховує новий (потенційно можливий, плановий або бажаний) прибуток від впровадження інтегрованих банківських послуг (NPP) та економічних ефект, що створюється від їх впровадження (EI).
Зазначені показники розраховуються відповідно до концепції імітаційної моделі та з урахуванням мультиплікаційного ефекту, що виникає в процесі кредитування. Це означає, що при здійсненні розрахунків вважається, що відсотковий дохід додатково залучених ресурсів при впровадженні інтегрованих послуг при спрямуванні його на кредитні операції банку адекватно збільшує залишки на поточних рахунках клієнтів банку, а у разі їх виходу за межі мережі банківських філій певного банку вони будуть поповнені залишками на поточних рахунках нових клієнтів, що залучаються завдяки впровадженню інтегрованих послуг. При розрахунку розміру мультиплікаційного ефекту певного банку умовно вважається, що він дорівнює загальнобанківському мультиплікаційному ефекту, властивому всієї національної банківській системі.
Запропонована імітаційна модель може і повинна бути удосконалена та деталізована по багатьох показниках. Так, наприклад, більш досконала імітаційна модель повинна детально обраховувати доходи від кредитного портфеля банку як суму відповідної доходності по кожному наданому кредиту з урахуванням відсотків по кредиту та терміну його використання. Цей показник також доцільно скоригувати коефіцієнтом, що корелює доходність з урахуванням неповернутих, безнадійних кредитів, відповідних ризиків тощо. У зв’язку з тим, що метою створення імітаційної моделі в нашому випадку є доведення наявності та доцільності економічного ефекту від впровадження інтегрованих послуг та розкриття основних зв’язків, що впливають на нього, то деталізація та ретельні розрахунки «точністю до копійки» в нашому випадку не є принципово важливими.
Аналогічним є можливість удосконалення запропонованої імітаційної моделі для розрахунку прибутку комерційного банку з урахуванням впливу відповідних податків на банківську діяльність або дотримання комерційним банком певних нормативів Національного банку України (нормативи капіталу, ліквідності тощо) чи обмежень та побажань власників банку (прибутковість власного капіталу, особливі умови компенсації за залишки на поточних рахунках певним групам клієнтів у кооперативних банках тощо). Незважаючи на те, що ці аспекти банківської діяльності нами не розглядаються, запропонована імітаційна модель достатньо легко може бути адаптована до відповідних коригуючих коефіцієнтів та існуючих бухгалтерських і інших програм.
Важливою позитивною рисою запропонованої імітаційної моделі є можливість коригувати дані, що приймають участь в розрахунках відповідно до зміни зовнішніх факторів, таких як облікова ставка та норма резервування НБУ, вартість міжбанківських кредитів; маркетингової стратегії банку та її наслідків: розмір компенсації за використання ресурсів на поточних рахунках клієнтів, розмір міжбанківських кредитів та депозитів тощо. Можливість зміни будь-яких вхідних даних дозволяє моделювати (імітувати) можливі наслідки від застосування певних тактичних прийомів реалізації маркетингової стратегії банку. Імітаційна модель також наочно демонструє наявні конкурентні переваги та резерви підвищення конкурентоспроможності комерційного банку при впровадженні інтегрованих банківських послуг, дозволяє розраховувати граничні параметри певних факторів, що формують маркетингову стратегію банку. Запропонована імітаційна модель дозволяє також наочно продемонструвати соціальний ефект та корисність впровадження інтегрованих банківських послуг в масштабі національної системи.
Математичний опис з використанням мови програмування С++ запропонованої імітаційна модель взаємодії основних показників діяльності банку при впровадженні інтегрованих банківських послуг та відповідній маркетинговій стратегії банку зображено на рис. 4.2.
/*ECONOM.h*/
/*Опис основного класу, конструкторів, типів даних, об'ява іменованих констант по іменам перемінних в формул*/
#ifndef ECONOMH #define ECONOMH 1
typedef long double T_ECONOMTYPE;//тип данных для результатов
//перелічення для імен перемінних формул в формулах
//<-перемінні першої формули
enum P_NAMES {P_START=0, T=0, RK, PK, MK, DO, DI, PDO, PDI, SR, VK, MD, IA,
//перемінні другої формули->
IP, VP, P_LEFT, P_RIGHT=P_LEFT, R=P_LEFT, VMK, NDO, NDI, NPDI, NMK, NMD,
//виграш та економічний ефект
P_END_VAR, NPP=P_END_VAR, EI, P_NUM};
//основний клас
class T_PARAMETERS
{
public:
T_PARAMETERS();
T_PARAMETERS(const T_PARAMETERS&);
private:
//набір параметрів, їх кількість дорівнює P_NUM із перелічення P_NAMES
T_ECONOMTYPE param[P_NUM];
//Функція підрахунку лівої та правої частин для першої формули
T_ECONOMTYPE Left();
T_ECONOMTYPE Right();
public:
//доступ до кожної перемінної за ім'ям
T_ECONOMTYPE& operator[] (int i);
//оператор копіювання
T_PARAMETERS& operator= (const T_PARAMETERS&);
//перевірка рівняння
//RK+MK+IA=DO+DI+VK+IP+MD
//повертає 0, якщо дорівнює; не 0, якщо не дорівнює
T_ECONOMTYPE check_eval();
//відкриті функції підрахунку лівої та правої частин
//для рівняння
//RK+MK+IA==DO+DI+VK+IP+MD
//повертає 0, якщо дорівнює; не 0, якщо не дорівнює
inline T_ECONOMTYPE eval_Left();
inline T_ECONOMTYPE eval_Right();
//функція для підрахунку витрат на рекламу і т. п.
//VP=RK*PK-(DO*PDO+DI*PDI+VK*SR)
T_ECONOMTYPE count_VP();
//статична функція для підрахунку VP на основі будь-яких
//параметрів. Використовується для самоперевірки
static T_ECONOMTYPE count_VP(T_ECONOMTYPE RK, T_ECONOMTYPE PK, T_ECONOMTYPE DO, T_ECONOMTYPE PDO, T_ECONOMTYPE DI, T_ECONOMTYPE PDI, T_ECONOMTYPE VK, T_ECONOMTYPE SR);
//Функція для підрахунку першої формули
T_ECONOMTYPE F();
//Статична функція для підрахунку першої формули на основі //будь-яких параметрів
static inline T_ECONOMTYPE F(T_ECONOMTYPE RK,
T_ECONOMTYPE PK,
T_ECONOMTYPE MK,
T_ECONOMTYPE IA,
T_ECONOMTYPE DO,
T_ECONOMTYPE DI,
T_ECONOMTYPE PDO,
T_ECONOMTYPE PDI,
T_ECONOMTYPE VK,
T_ECONOMTYPE SR,
T_ECONOMTYPE MD,
T_ECONOMTYPE IP,
T_ECONOMTYPE VP);
//функція для розрахунку заданого параметра
T_ECONOMTYPE count_param(P_NAMES var);
//друга формула
inline T_ECONOMTYPE count_NPP();
T_ECONOMTYPE count_EI();
};//class T_PARAMETERS
#endif
//---------------------------------------------------------------------------
#ifndef UnitMainH
#define UnitMainH
//---------------------------------------------------------------------------
#include
#include
#include
#include
#include "ECONOM.cpp"
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Lbl_T; TLabel *Lbl_RK; TLabel *Lbl_PK; TLabel *Lbl_MK; TLabel *Lbl_DO; TLabel *Lbl_DI; TLabel *Lbl_PDO; TLabel *Lbl_PDI; TLabel *Lbl_SR; TLabel *Lbl_VK; TLabel *Lbl_MD; TLabel *Lbl_IA; TLabel *Lbl_IP; TEdit *Ed_T; TEdit *Ed_RK; TEdit *Ed_PK; TEdit *Ed_MK; TEdit *Ed_DO; TEdit *Ed_DI; TEdit *Ed_PDO; TEdit *Ed_PDI; TEdit *Ed_SR; TEdit *Ed_VK; TEdit *Ed_MD; TEdit *Ed_IA; TEdit *Ed_IP; TCheckBox *CB_T; TCheckBox *CB_RK; TCheckBox *CB_PK; TCheckBox *CB_MK; TCheckBox *CB_DO; TCheckBox *CB_DI; TCheckBox *CB_PDO; TCheckBox *CB_PDI; TCheckBox *CB_SR; TCheckBox *CB_VK; TCheckBox *CB_MD; TCheckBox *CB_IA; TCheckBox *CB_IP; TStaticText *ST1; TRadioGroup *RG_VP; TLabel *Lbl_VP; TEdit *Ed_VP; TCheckBox *CB_VP; TEdit *Ed_R; TEdit *Ed_VMK; TEdit *Ed_NDO; TEdit *Ed_NDI; TEdit *Ed_NPDI; TEdit *Ed_NMK; TEdit *Ed_NMD; TLabel *Lbl_R; TLabel *Lbl_VMK; TLabel *Lbl_NDO; TLabel *Lbl_NDI; TLabel *Lbl_NPDI; TLabel *Lbl_NMK; TLabel *Lbl_NMD; TGroupBox *GroupBox1; TLabel *Lbl_NPP; TLabel *Lbl_EI; TStaticText *ST_NPP; TStaticText *ST_EI;
void __fastcall Ed_TKeyPress(TObject *Sender, char &Key);
void __fastcall CB_DIClick(TObject *Sender);
void __fastcall Ed_DOChange(TObject *Sender);
void __fastcall RG_VPClick(TObject *Sender);
void __fastcall Ed_RChange(TObject *Sender);
private: // User declarations
T_PARAMETERS bank;
P_NAMES CHECKED;
class LACB
{
TLabel *FLabel;
TEdit *FEdit;
TCheckBox *FCheckBox;
public:
LACB(const LACB& _X)
{FLabel=_X.FLabel;FEdit=_X.FEdit; FCheckBox=_X.FCheckBox;}
LACB(TLabel *_Label, TEdit *_Edit, TCheckBox *_CheckBox):FLabel(_Label), FEdit(_Edit), FCheckBox(_CheckBox)
{}
LACB()
{
FLabel=NULL;
FEdit=NULL;
FCheckBox=NULL;
}
~LACB()
{
FLabel=NULL;
FEdit=NULL;
FCheckBox=NULL;
}
TLabel* Label(){return FLabel;}
TEdit* Edit(){return FEdit;}
TCheckBox* CheckBox(){return FCheckBox;}
};
LACB* Edits[P_END_VAR];
int fill_datas(T_PARAMETERS *bank)
{
//заповнити дані
int i = P_START;
try{
for(; i
{
switch(i)
{
case PK: case PDO: case PDI: case SR://проценты
(*bank)[i]=StrToFloat(Edits[i]->Edit()->Text)/100;
break;
//гривні
default: (*bank)[i]=StrToFloat(Edits[i]->Edit()->Text);
}//switch
}//for
}//try
catch(…)
{
//MessageDlg("Неможливо перетворити в число значення \"" + Edits[i]->Edit()->Text+"\"", mtError, TMsgDlgButtons() << mbOK, 0);
return i;
}
return 0;
}
int fill_datas_right(T_PARAMETERS *bank)
{
//заповнити ВСІ дані
int i = P_START;
try{
for(; i < P_END_VAR; i++)
{
switch(i)
{
case PK: case PDO: case PDI: case SR: case NPDI: case R: case VMK://відсотки
(*bank)[i]=StrToFloat(Edits[i]->Edit()->Text)/100;
break;
//гривні
default: (*bank)[i]=StrToFloat(Edits[i]->Edit()->Text);
}
}
}//try
catch(…)
{
//MessageDlg("Неможливо перетворити в число значення \"" + Edits[i]->Edit()->Text+"\"", mtError, TMsgDlgButtons() << mbOK, 0);
return i;
}
return 0;
}
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "UnitMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Edits[T] = new LACB(Lbl_T, Ed_T, CB_T);
Edits[RK] = new LACB(Lbl_RK, Ed_RK, CB_RK);
Edits[PK] = new LACB(Lbl_PK, Ed_PK, CB_PK);
Edits[MK] = new LACB(Lbl_MK, Ed_MK, CB_MK);
Edits[DO] = new LACB(Lbl_DO, Ed_DO, CB_DO);
Edits[DI] = new LACB(Lbl_DI, Ed_DI, CB_DI);
Edits[PDO] = new LACB(Lbl_PDO, Ed_PDO, CB_PDO);
Edits[PDI] = new LACB(Lbl_PDI, Ed_PDI, CB_PDI);
Edits[SR] = new LACB(Lbl_SR, Ed_SR, CB_SR);
Edits[VK] = new LACB(Lbl_VK, Ed_VK, CB_VK);
Edits[MD] = new LACB(Lbl_MD, Ed_MD, CB_MD);
Edits[VP] = new LACB(Lbl_VP, Ed_VP, CB_VP);
Edits[IA] = new LACB(Lbl_IA, Ed_IA, CB_IA);
Edits[IP] = new LACB(Lbl_IP, Ed_IP, CB_IP);
Edits[R] = new LACB(Lbl_R, Ed_R, NULL);
Edits[VMK] = new LACB(Lbl_VMK, Ed_VMK, NULL);
Edits[NDO] = new LACB(Lbl_NDO, Ed_NDO, NULL);
Edits[NDI] = new LACB(Lbl_NDI, Ed_NDI, NULL);
Edits[NPDI]= new LACB(Lbl_NPDI,Ed_NPDI,NULL);
Edits[NMK] = new LACB(Lbl_NMK, Ed_NMK, NULL);
Edits[NMD] = new LACB(Lbl_NMD, Ed_NMD, NULL);
//заповнюємо поля значеннями по замовченню
CHECKED=P_START;//щоб не викликався OnChange полей вводу
for(int i = P_START; i < P_END_VAR; i++)
Edits[i]->Edit()->Text = FloatToStr(bank[i]);
//по замовченню перемінної являється PDI
CHECKED = PDI;
Edits[CHECKED]->Edit()->Enabled = false;
Edits[CHECKED]->CheckBox()->Enabled = false;
Edits[CHECKED]->CheckBox()->Checked = true;
//починаємо з установки VP
Edits[VP]->Edit()->Enabled=false;
Edits[VP]->CheckBox()->Checked=true;
RG_VP->ItemIndex=0;
//встановим відступи поміток та чек боксів від текста
const int d=5;//5 пікселей
for(int i=P_START; i < P_END_VAR; i++)
{
int l= Edits[i]->Edit()->Left – Edits[i]->Label()->Width – d;
if(l>0) Edits[i]->Label()->Left = l;
else {
Edits[i]->Label()->Left=0;
Edits[i]->Edit()->Left = 0 + Edits[i]->Label()->Width + d;
}
Edits[i]->Label()->Top = Edits[i]->Edit()->Top;
if(Edits[i]->CheckBox())
{
Edits[i]->CheckBox()->Top = Edits[i]->Edit()->Top;
Edits[i]->CheckBox()->Left = Edits[i]->Edit()->Left + Edits[i]->Edit()->Width + d;
}
}
Form1->Left = (Screen->Width – Form1->Width)/2;
Form1->Top = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Ed_TKeyPress(TObject *Sender, char &Key)
{
//перетворити дані символи в розділював цілої та дробної частини
if(Key=='.' || Key ==',' || Key=='>' || Key=='<' || Key=='б' || Key=='ю' || Key=='Б' || Key=='Ю')
{
Key=DecimalSeparator;
return;
} //Ctrl+C
if((Key <= '9' && Key >= '0') || Key=='-' || Key=='\b' || Key=='\x3' ||
//Ctrl+V //CTRL+X
Key=='\x16' || Key=='\x18');
else Key='\ 0';}
//---------------------------------------------------------------------------
void __fastcall TForm1::CB_DIClick(TObject *Sender)
{
int t=CHECKED;
for(int i = P_START; i
{
if(i==VP)continue;//без учета VP
if(Edits[i]->CheckBox()->Checked)
{
Edits[i]->Edit()->Enabled=false;
Edits[i]->CheckBox()->Enabled=false;
t=(i!=CHECKED)?i:t;
}
else
{
Edits[i]->Edit()->Enabled=true;
Edits[i]->CheckBox()->Enabled=true;
Edits[i]->CheckBox()->Checked=false;
}
}
if(t!=CHECKED)
Edits[CHECKED]->CheckBox()->Checked=false;
CHECKED=(P_NAMES)t;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Ed_DOChange(TObject *Sender)
{
if(RG_VP->ItemIndex == 0)
{//встановити VP
T_ECONOMTYPE t;
try{
t = T_PARAMETERS::count_VP(StrToFloat (Edits[RK]->Edit()->Text)/100,
StrToFloat(Edits[PK]->Edit()->Text),
StrToFloat(Edits[DO]->Edit()->Text),
StrToFloat(Edits[PDO]->Edit()->Text)/100,
StrToFloat(Edits[DI]->Edit()->Text),
StrToFloat(Edits[PDI]->Edit()->Text)/100,
StrToFloat(Edits[VK]->Edit()->Text),
StrToFloat(Edits[SR]->Edit()->Text)/100);
}
catch(…)
{
// MessageDlg("Помилка вводу даних!", mtError, TMsgDlgButtons() << mbOK, 0);
ST1->Caption="Помилка вводу даних!";
return;
}
Edits[VP]->Edit()->Text = FloatToStr(t);
return;
}
//якщо VP встановлено
//перевірка, чи вибрана перемінна
if(CHECKED<=P_START || CHECKED>P_LEFT) return;
ST1->Caption = "";
//ввести дані
int res=fill_datas(&bank);
if(res)
{
ST1->Caption = "Error in datas!!! № "+IntToStr(res)+ "\n";
return;
}
//перевірка RK+MK+IA=DO+DI+VK+IP+MD
if(bank.check_eval())
{
ST1->Caption = "Невірно введені значення!\nRK+MK+IA=" +FloatToStr(bank.eval_Left()) + "\nDO+DI+VK+IP+MD=" + FloatToStr(bank.eval_Right())+"\n";
//return;
}
//Розрахувати відмічену перемінну
try{
bank.count_param(CHECKED);
}
catch(…)
{
ST1->Caption = "Error in counting!!!";
return;
}
//вивести на екран
P_NAMES t=CHECKED;//щоб не викликати OnChange
CHECKED=P_START;
switch (t)
{
//RK MK IA DO DI VK IP MD
case PK: case PDO: case PDI: case SR:
Edits[t]->Edit()->Text = FloatToStr(bank[t]*100);
break;
default:
Edits[t]->Edit()->Text = FloatToStr(bank[t]);
}
CHECKED=t; //повернути значення CHECKED
//розрахувати NPP и EI
Ed_RChange(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RG_VPClick(TObject *Sender)
{
bool t=!RG_VP->ItemIndex;
for(int i =P_START; i
{
if(i==VP) continue;
switch (i)
{
case RK: case PK: case DO: case PDO: case DI: case PDI: case VK: case SR:
Edits[i]->CheckBox()->Visible = !t;
break;
default:
Edits[i]->Edit()->Visible= !t;
//умова для правої частини
if(Edits[i]->CheckBox())Edits[i]->CheckBox()->Visible = !t;
Edits[i]->Label()->Visible = !t;
}
}
Edits[CHECKED]->Edit()->Enabled=t;
Edits[VP]->Edit()->Enabled=t;
//NPP и EI
GroupBox1->Visible=!t;
//розрахувати ячейки
Ed_DOChange(Sender);
//приховати поле T
Edits[T]->Edit()->Visible= false;
Edits[T]->CheckBox()->Visible = false;
Edits[T]->Label()->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Ed_RChange(TObject *Sender)
{
//перевірка, чи вибрана перемінна (чи почата робота)
if(CHECKED<=P_START || CHECKED>P_LEFT) return;
fill_datas_right(&bank);
ST_NPP->Caption = FloatToStr(bank.count_NPP());
ST_EI->Caption = FloatToStr(bank.count_EI());
}
//---------------------------------------------------------------------------
Рис. 4.2. Опис програми імітаційної моделі взаємодії основних показників діяльності банку при впровадженні інтегрованих банківських послуг та відповідній маркетинговій стратегії банку