Дана програма може працювати під управлінням операційної системи сімейства Windows, починаючи від версії 95 та під управлінням ОС MS-DOS.
Мінімальні системні вимоги для коректної роботи програми:
- операційна система сімейства Windows або MS-DOS;
- процесор – не менше 80386;
- оперативної пам’яті – 1 Мб;
- відеокарта з якістю кольоропередачі – 16 біт;
- вільного місця на жорсткому диску – 135 кб.
Після запуску програми спочатку бачимо зображення електронної титульної сторінки (рисунок 4.2). Програма чекає, поки буде натиснута довільна кнопка. Що ми і робимо. З’являється графік функцій (рисунок 4.3). Знову натискаємо довільну кнопку. З’являється вікно із запитом на введення даних (рисунок 4.4). Вводимо послідовно значення межі проміжка та похибки. Отримаємо результати: корінь рівняння та кількість ітерацій.
Після отримання числових результатів натискаємо довільну кнопку і переходимо до наступного вікна (рисунок 4.5), яке демонструє графічно реалізацію метода. Дані для x, a та b завантажуються з текстових файлів KORENI.TXT та MEGI.TXT, точки будуються відповідно до цих даних. Після кожного натиснення будь-якої клавіші зчитуються наступні дані, аж поки не знайдемо значення x із заданою точністю. Після натискання довільної кнопки переходимо до меню користувача (рисунок 4.6).
При вибору пунктів меню з’являються знайомі нам вже вікна:
1 - Рисунок 4.2;
2 - Рисунок 4.3;
3 або 5 - Рисунок 4.4;
4 - Рисунок 4.5.
Натиснувши 7 – вийдемо з програми, а обравши 6 побачимо вікно з інформацією про автора програми (Рисунок 4.7). На інші кнопки програма не реагує. Натиснувши довільну кнопку знову переходимо до вікна меню користувача.
ВИСНОВКИ
В ході виконання даної курсової роботи ми вдосконалили свої знання мови С++ та вміння нею користуватися в середовищі Borland C++. Певна частина теоретичного матеріалу була опрацьована самостійно, використовуючи літературні джерела, а також інформаційні ресурси Інтернету. Серед новизни слід відмітити використання багатомодульного проектування.
Серед недоліків програми слід відмітити недостатність у візуальному оформленні, хоча середовище програмування і не дає широких можливостей для цього. Серед переваг помічаємо такі характеристики програми, як швидкодія, легкість у користуванні та невеликі розміри виконавчого файлу..
Створена нами програма проста та інтуїтивно зрозуміла і легка у користуванні.
У пояснювальній записці вповні розглянута проблема пошуку коренів нелінійних рівнянь, наведені необхідні формули та теореми. Крім того, побудовані блок-схеми алгоритмів основних функцій відповідають діючим стандартам і вимогам.
Отже, можемо зробити висновок, що створений нами проект повністю відповідає завданню, а пояснююча записка написана з дотриманням всіх вимог і стандартів.
ПЕРЕЛІК ПОСИЛАНЬ
1. Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навч. посібн. 3-тє вид. – Львів: СПД Глинський, 2006. – 192с.
2. Пахомов Б.И. С/С++ и Borland C++ Builder для студента. – Спб.: БХВ-Петербург, 2006. – 448 с.:ил.
3. С/С++. Программирование на языке высокого уровня / Т.А. Павловская. СПб.: Питер, 2002. – 464 с
4. Сборник часто задаваемых вопросов и ответов к ним по компиляторам языков Си и C++ http://soft.munic.msk.su/
5. Уоррен Г.С. Алгоритмические трюки для программистов. - М.: Изд.дом «Вильямс», 2003
6. Шилдт Г. Теория и практика С++. — СПб.: BHV, 1996.
Додаток А.
(обов’язковий)
Загальна схема проекту.
Додаток Б.
(обов’язковий)
Текст програми
main.cpp
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <stdio.h>
#include <math.h>
#include "tytulka.cpp"
#include "grafik.cpp"
#include "dyhotom.cpp"
#include "demon.cpp"
void avtor()
{
clrscr();
setcolor(10);
int xmax=getmaxx(),ymax=getmaxy();
bar(0,0,xmax,ymax);
setcolor(BLUE);
settextstyle(0,0,2);
outtextxy(175,150,"Kursovu robotu");
outtextxy(230,250,"vykonav");
outtextxy(150,350,"Shypuk Oleksandr");
getch();
}
//===============================================================
void main()
{
clrscr();
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode,"");
errorcode = graphresult();
if (errorcode != grOk)
{
cout<< "ERROR" << grapherrormsg(errorcode);
cout<< "\n Press any key...";
getch();
exit(1);
}
tytulka();
grafik();
dyhotom();
demon();
int k=0;
while (k!=7)
{
setcolor(10);
int xmax=getmaxx(),ymax=getmaxy();
bar(0,0,xmax,ymax);
setcolor(BLUE);
settextstyle(0,0,2);
outtextxy(75,50,"1 -> Tytulka");
outtextxy(75,85,"2 -> Grafik");
outtextxy(75,120,"3 -> Metod dyhotomiji");
outtextxy(75,155,"4 -> Demonstratsija roboty metodu");
outtextxy(75,190,"5 -> Utochnyty sche odyn korin");
outtextxy(75,225,"6 -> Pro avtora");
outtextxy(75,260,"7 -> Vyhid");
outtextxy(75,300,"Zrobit svij vybir");
settextstyle(0,0,1);
outtextxy(75,400,"PRYMITKA:");
outtextxy(75,425,"Jaksho rivnjannja maje bilshe odnogo korenja,");
outtextxy(75,450,"perejdit poslidovno do punktiv 2,3,4 abo vyberit punkt 5");
cin>>k;
switch (k)
{
case 1: tytulka(); break;
case 2: grafik(); break;
case 3: dyhotom(); break;
case 4: demon(); break;
case 5: dyhotom(); break;
case 6: avtor(); break;
case 7: exit(1); break;
}
}
closegraph();
}
demon.cpp
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <stdio.h>
#include <math.h>
void demon()
{
int xmax=getmaxx(),ymax=getmaxy();
FILE *fp1,*fp2;
float x, a, b;
int i = 7;
char *buf;
buf = (char*)malloc(5);
fp1=fopen("koreni.txt","rt");
fp2=fopen("megi.txt","rt");
while (!feof(fp1))
{
clrscr();
fscanf(fp1,"%f\n",&x);
fscanf(fp2,"%f\n",&a);
fscanf(fp2,"%f\n",&b);
setcolor(WHITE);
bar(0,0,xmax,ymax);
setcolor(RED);
settextstyle(0,0,2);
outtextxy(165,25,"x");
outtextxy(315,25,"a");
outtextxy(455,25,"b");
rectangle(125,55,250,100);
rectangle(275,55,400,100);
rectangle(425,55,550,100);
settextstyle(0,0,1);
setcolor(GREEN);
gcvt(x,i,buf);
outtextxy(140,75,buf);
gcvt(a,i,buf);
outtextxy(290,75,buf);
gcvt(b,i,buf);
outtextxy(440,75,buf);
setcolor(RED);
line(10,240,630,240);
line(620,235,630,240);
line(620,245,630,240);
settextstyle(0,0,1);
outtextxy(620,225,"x");
circle(20+(x+2)*150,240,2);
outtextxy(20+(x+2)*150,225,"x");
circle(20+(a+2)*150,240,2);
outtextxy(20+(a+2)*150,245,"a");
circle(20+(b+2)*150,240,2);
outtextxy(20+(b+2)*150,255,"b");
getch();
free(buf);
}
}
dyhotom.cpp
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <stdio.h>
#include <math.h>
double f(double x)
{
return x*x*x/3-atan(x);
}
//===============================================================
void dyhotom()
{
clrscr();
FILE *fp1,*fp2;
fp1=fopen("koreni.txt","wt");
fp2=fopen("megi.txt","wt");
int k=0;
double a, b, c, epsilon;
cout << "a=";
cin >> a;
cout << "b=";
cin >> b;
cout << "eps=";
cin >> epsilon;
if (f(a)*f(b)>0)
cout << "nemaje koreniv abo bilshe odnogo na tsjomu promizhku" << endl;
else
{
while (b - a > epsilon)
{
c = (a + b) / 2;
fprintf(fp1,"%f\n",c);
fprintf(fp2,"%f\n",a);
fprintf(fp2,"%f\n",b);
if(f(c)==0) break;
if(f(b) * f(c) < 0)
a = c;
else
b = c;
k++;
}
cout << "-------------------------------------------------" << endl;
cout << "korin rivnjannja x=" << (a + b) / 2 << endl;
cout << "kilkist iteratsij n=" << k << endl;
}
fclose(fp1);
fclose(fp2);
getch();
}
grafik.cpp
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <stdio.h>
#include <math.h>
void grafik()
{
clrscr();
setcolor(WHITE);
int xmax=getmaxx(),ymax=getmaxy();
bar(0,0,xmax,ymax);
setcolor(RED);
line(10,240,630,240);
line(620,235,630,240);
line(620,245,630,240);
settextstyle(0,0,1);
outtextxy(620,225,"x");
line(320,10,320,470);
line(320,10,315,20);
line(320,10,325,20);
outtextxy(330,10,"y");
int dec, sign;
int i;
for (i=-2;i<=2;i++)
{
circle(20+((i+2)*150),240,2);
if(i>0)
outtextxy(17+((i+2)*150),250,fcvt(i, 0, &dec, &sign));
else if(i<0)
{
outtextxy(17+((i+2)*150),250,fcvt(i, 0, &dec, &sign));
outtextxy(10+((i+2)*150),250,"-");
}
else outtextxy(25+((i+2)*150),250,fcvt(i, 0, &dec, &sign));
}
for (i=-4;i<=4;i++)
{
circle(320,20+(4+i)*55,2);
if(i<0)
outtextxy(325,20+(4+i)*55,fcvt(-i, 0, &dec, &sign));
else if (i>0)
{
outtextxy(325,20+(4+i)*55,fcvt(-i, 0, &dec, &sign));
outtextxy(310,20+(4+i)*55,"-");
}
}
setcolor(BLUE);
float x1,x2,y1,y2,xx1,xx2,yy1,yy2;
x1=-2;y1=atan(x1);
for (x2=-2;x2<=2;x2+=0.01)
{
y2=atan(x2);
xx1=20+(x1+2)*150;
xx2=20+(x2+2)*150;
yy1=460-(y1+4)*55;
yy2=460-(y2+4)*55;
line(xx1,yy1,xx2,yy2);
x1=x2;y1=y2;
}
outtextxy(520,210,"y(x)=atan(x)");
setcolor(GREEN);
x1=-2;y1=x1*x1*x1/3;
for (x2=-2;x2<=2;x2+=0.01)
{
y2=x2*x2*x2/3;
xx1=20+(x1+2)*150;
xx2=20+(x2+2)*150;
yy1=460-(y1+4)*55;
yy2=460-(y2+4)*55;
line(xx1,yy1,xx2,yy2);
x1=x2;y1=y2;
}
outtextxy(480,120,"y(x)=x*x*x/3");
getch();
}
tytulka.cpp
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <stdio.h>
void tytulka()
{
clrscr();
setcolor(WHITE);
int a=5,xmax=getmaxx(),ymax=getmaxy();
bar(0,0,xmax,ymax-3*a);
setcolor(GREEN);
rectangle(2*a,a,xmax-a,ymax-4*a);
settextstyle(0,0,1);
outtextxy(190,15,"Ministerstvo osvity i nauky Ukrainy");
outtextxy(160,30,"Lutskij natsionalnyj tehnichnyj universytet");
outtextxy(350,65,"Kafedra kompjuternoji inzheneriji");
setcolor(RED);
settextstyle(0,0,2);
outtextxy(200,190,"Kursova robota");
settextstyle(0,0,1);
outtextxy(265,215,"z dyscypliny");
outtextxy(255,235,"PROGRAMUVANNJA");
outtextxy(280,250,"na temu: ");
outtextxy(120,265,"ROZVJAZUVANNJA NELINIJNYH RIVNJAN METODOM DYHOTOMIJI ");
setcolor(GREEN);
outtextxy(350,350,"Vykonav st.gr.KSMS-13");
outtextxy(350,365,"Kostenko Vasyl");
outtextxy(350,380,"Pereviryv asystent");
outtextxy(350,395,"Lavrenchuk S.V.");
outtextxy(275,445,"Lutsk 2010");
setcolor(RED);
outtextxy(260,470,"Press any key... ");
getch();
}
Додаток В
(обов’язковий)
Блок-схеми алгоритмів
void avtor()
void main()
void grafik()
void dyhotom()