Структура програми
Дана програма складається з модулів і функцій, що робить її більш зрозумілою.
Основним модулем програми є - 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(); // виклик функції розв’язання диференційного рівняння. методом Крилова
}