Структура програми

 

Дана програма складається з модулів і функцій, що робить її більш зрозумілою.

Основним модулем програми є - main_pr.cpp. Даний модуль складається з функції Osnovna_progr(). Ця функція ініціалізує графічний режим, пересуває рамку по пунктах меню і викликає функції інших модулів.

Допоміжні модуля – це

menu.cpp, його структура:

У даному модулі викликаються функції інших модулів, описаний клас Ramka,

class Ramka

{

public:

int kod_klav(); // код натиснутої клавіші

void ramka_1(); // меню користувача

void ramka_2(); // рамка для пунктів меню

void uslovie(); // вибір потрібної функції

void Help(); // допомога для роботи з програмою

};

 

який складається з відкритих функцій- членів:

int Ramka :: kod_klav() – повертає значення натиснутої клавіші,

int kod_klav()

{

klav=getch();

return klav;

};

 

void ramka_1() – виводить на екран меню користувача,

void Ramka :: ramka_1()

{

outtextxy(180,50,"РОЗВ’ЯЗАННЯ ДИФЕРЕНЦІАЛЬНИХ РІВНЯНЬ.");

outtextxy(230,180,"1.Метод Адамса.");

outtextxy(230,200,"2.Метод Рунге-Кутта.");

outtextxy(230,220,"3.Метод Крилова.");

outtextxy(230,240,"4.Приклад для користувача.");

setcolor(9);

outtextxy(100,420,"F1-Допомога Esc - Вихід ");

};

 

void ramka_2() – малює рамку для пунктів меню,

void ramka_2()

{

setcolor(0);rectangle(220,p,400,pp); // зафарбовує рамку

setcolor(2);rectangle(220,y1,400,y2); // малює рамку

};

 

void uslovie() – викликає потрібну функцію:

При виборі першого пункту меню викликається функція Adamca().

При виборі другого пункту меню викликається функція Runge_Kuta().

При виборі третього пункту меню викликається функція Krulov().

При виборі четвертого пункту меню викликається функція All_Metods().

void Ramka :: uslovie()

{if (y1= =170){closegraph(); // вибір першого пункту меню

Adamca(); //виклик методу Адамса

initgraph(&gdriver,&gmode,"c:\\borlandc\\bgi");

}

else

if (y1= =190) {closegraph(); // вибір другого пункту меню

Runge_Kuta(); //виклик методу Рунге-Кута

initgraph(&gdriver,&gmode,"c:\\borlandc\\bgi");

}

else if (y1= =210) // вибір третього пункту меню

{closegraph();

Krulov(); //виклик методу Крилова

initgraph(&gdriver,&gmode,"c:\\borlandc\\bgi");

}

else

{closegraph(); // вибір четвертого пункту меню

All_Metods(); // виклик усіх методів

initgraph(&gdriver,&gmode,"c:\\borlandc\\bgi");

}

};

void Help() – виводить з файлу допоміжну інформацію про програму.

 

void Ramka :: Help()

{ cleardevice();

setcolor(15);

FILE *f;

int Nstr=0;

char buff[612]; //буфер для виведеної інформації

f=fopen("c:\\borlandc\\help_srm.txt","r"); //відкриття файлу для зчитування

while (!feof (f)) // читання даних поки не кінець файлу

{

buff[0] = fgetc(f);

for(it i=1;!feof (f)&&buff[i-1]!='\n';i++)

buff[i] =fgetc(f);

buff[i-1]='\0';

outtextxy (10,Nstr*10,buff); //висновок інформації на екран

Nstr++;

}

ad.cpp, його структура:

У даному модулі описано три функції:

void Yravnen() – виводить на екран приклади рівнянь, що даються користувачу для розв’язання(опис функції вище в методі Рунге-Кута).

 

double Function(float x,float y,int chose) – вибирає яке рівняння потрібно вирішити і підставляє в нього значення x, y і повертає отримане значення (опис функції вище в методі Рунге-Кутта).

 

void Adamca() – розв’язання диференціального рівняння методом Адамса (опис функції вище в методі Адамса).

 

run.cpp, його структура:

У даному модулі описано три функції:

void Yravnen() – виводить на екран приклади рівнянь, що даються користувачу для розв’язання(опис функції вище в методі Рунге-Кута).

 

double Function(float x,float y,int chose) – вибирає яке рівняння потрібно вирішити і підставляє в нього значення x, y і повертає отримане значення (опис функції вище в методі Рунге-Кута).

 

void Runge_Kuta() – розв’язання диференціального рівняння методом Рунге-Кута(опис функції вище в методі Рунге-Кутта) .

krulov.cpp, його структура:

У даному модулі описано три функції:

void Yravnen() – виводить на екран приклади рівнянь, що даються користувачу для розв’язання(опис функції вище в методі Рунге-Кутта).

 

double Function(float x,float y,int chose) – вибирає яке рівняння потрібно вирішити і підставляє в нього значення x, y і повертає отримане значення (опис функції вище в методі Рунге-Кута).

 

void Krulov() – розв’язання диференціального рівняння методом Крилова

(опис функції вище в методі Крилова).

 

allmet.cpp, його структура:

У даному модулі описано п'ять функції:

double Function(float x,float y) -підставляє в рівняння значення x, y і повертає отримане значення.

double Function(float x,float y)

{double f;

f=x+y;

return f;

}

 

void Adamca() – розв’язання диференціального рівняння методом Адамса

(опис функції вище в методі Адамса, тільки без уведення початкових даних; дані задаються самим користувачем).

void Runge_Kuta() – розв’язання диференційного рівняння методом Рунге-Кутта(опис функції вище в методі Рунге-Кутта, тільки без уведення початкових даних; дані задаються самим користувачем).

 

void Krulov() – розв’язання диференційного рівняння методом Крилова (опис функції вище в методі Крилова, тільки без уведення початкових даних; дані задаються самим користувачем).

 

void All_Metods() – викликаються всі три методи розв’язання диференційного рівняння.

void All_Metods()

{

Adamca(); // виклик функції розв’язання диференційного рівняння. методом Адамса

Runge_Kuta(); // виклик функції розв’язання диференційного рівняння. методом Рунге-Кута

Krulova(); // виклик функції розв’язання диференційного рівняння. методом Крилова

}