Текст программы.
Разработка программного комплекса решения математической задачи численными методами
Tc (4);rpr («НЕПРАВИЛЬНОЕ УКАЗАНИЕ ПОГРЕШНОСТИ! «);tc (7); Rpr («быть монотонной и не иметь точек перегиба. «); Gxy (7,8); rpr («Инфо о сие замечательном творении…»); Tc (4);rpr («НЕПРАВИЛЬНОЕ УКАЗАНИЕ ИНТЕРВАЛА! «);tc (7); Void draw_window (char *caption, int xl, int xr, int yu, int yd, int cf, int cb) {. Gxy (7,7); rpr («Ввести данные и начать работу…»); Gxy (7,13); rpr («ESC — выйти; ENTER… Читать ещё >
Текст программы. Разработка программного комплекса решения математической задачи численными методами (реферат, курсовая, диплом, контрольная)
#include.
#include.
#include.
#include.
#include.
#define gxy gotoxy.
#define cpr cprintf.
#define rpr rprintf.
#define tc textcolor.
int x[]={10,10,10}, y[]={7,8,9};
FILE *hlp;
void rprintf (char str[]) {.
char buffer[200];
CharToOem (str, buffer);
cpr («%s», buffer); }.
void draw_window (char *caption, int xl, int xr, int yu, int yd, int cf, int cb) {.
register short int x, y;
tc (cf);
gxy (xl, yu); putch (218);
gxy (xl, yd); putch (192);
gxy (xr, yu); putch (191);
gxy (xr, yd); putch (217);
for (x=xl+1;x.
gxy (x, yu); putch (196);
gxy (x, yd); putch (196); }.
for (y=yu+1;y.
gxy (xl, y); putch (179);
gxy (xr, y); putch (179);
for (x=xl+1;x.
gxy (x, y);putch (32); } }.
gxy (xl+floor ((xr-xl-strlen (caption))/2), yu); cpr («%s», caption);
}.
int selection (int *x, int *y, int cnt) {.
int cur=1, i, c;
int pressed_key;
const int enter_key=13, up_arrow=72,down_arrow=80,esc_key=27;
do {.
for (i=0;i.
{.
gxy (x[i], y[i]);
if (i+1==cur)c=14; else c=0;
tc (c); putch (16);
}.
pressed_key=getch ();
switch (pressed_key) {.
case up_arrow: cur=(cur==1)?cnt:cur-1;break;
case down_arrow: cur=(cur==cnt)?1:cur+1;break;
case esc_key: exit (0);
case enter_key: return cur;
default: break; }.
}while (pressed_key≠up_arrow||pressed_key≠down_arrow);
}.
float F (float v, int n, float*k).
{.
int i;
float tmp=0;
for (i=n;i>=0;i—).
{.
tmp+=k[i]*pow (v, i);
}.
return tmp;
}.
int main (void) {.
int choice, i, j;
int n, xc, yc;
float *k, a, b, p, l, r, fl, fr, fx, xp, root;
char s[50];
for (;;){.
clrscr ();
gxy (7,6);rpr («______________________КУРСОВАЯ РАБОТА_____________________»);
gxy (7,5);rpr («__________________________________________________________»);
gxy (7,6); rpr (««); tc (2);
gxy (7,7); rpr («Ввести данные и начать работу…»);
gxy (7,8); rpr («Инфо о сие замечательном творении…»);
gxy (7,9); rpr («Выход…»);
gxy (7,10); rpr (««); tc (7);
gxy (7,11); rpr («______________________КЛАВИШИ:_________________________»);
gxy (7,12); rpr («ВНИЗ, ВВЕРХ — Выбор»);
gxy (7,13); rpr («ESC — выйти; ENTER — подтвердить»);
gxy (7,14); rpr («_______________________________________________________»);
tc (3);
gxy (7,15); rpr («___________________ТОКАРЧУК Н.А.______________________»);
choice=selection (x, y,3);
switch (choice) {.
case 1: clrscr ();tc (14);
rpr («____________________Вводд данных:___________________ «); do {.
tc (7);rpr («Введите степень многочлена из интервала [2; 5]-> «);
scanf («%d» ,&n);
if (n5).
{.
tc (4);rpr («НЕПРаВИЛЬНОЕ ЗНАЧЕНИЕ! «);tc (7);
}.
}while (n5);
k=new float[n+1];
rpr («Введите коэффициенты многочлена при степенях, начиная со старшего: «);
for (i=0;i<=n;i++)scanf («%f» ,&k[n-i]);
tc (2);rpr («ПОЛУЧЕННЫЙ МНОГОЧЛЕН: «);tc (10);
for (i=n;i>=0;i—).
{.
if (k[i]<0 || i==n)cpr («%f (X^%d)», k[i], i);
else if (i≠n)cpr («+%f (X^%d)», k[i], i);
}.
putch (8);putch (8);putch (8);putch (8);putch (8);
cpr («= 0 «);tc (7);
do {.
rpr («Введите интервал [a; b], содержащий корень уравнения: «);
rpr («Примечание: Функция y=f (x) должна иметь на указанном интервале только 1 корень, «);
rpr («быть монотонной и не иметь точек перегиба. «);
scanf («%f %f», &a,&b);
if (a==b || a>b).
{.
tc (4);rpr («НЕПРАВИЛЬНОЕ УКАЗАНИЕ ИНТЕРВАЛА! «);tc (7);
}.
}while (a==b || a>b);
do {.
rpr («Введите точность вычисления корня уравнения:»);
scanf («%f», &p);
if (p>0.1 || p<0.1).
{.
tc (4);rpr («НЕПРАВИЛЬНОЕ УКАЗАНИЕ ПОГРЕШНОСТИ! «);tc (7);
}.
}while (p>0.1 || p<0.1);
if (F (a, n, k)*F (b, n, k)>0).
{.
tc (14);rpr («Уравнение не имеет корней либо имеет более 1 корня на указанном интервале! «);
tc (7);rpr («Нажмите любую клавишу…»); getch ();
break;
}.
l=a;r=b;
fl=F (l, n, k);
fr=F (r, n, k);
do {.
xp=(l+r)/2;
fx=F (xp, n, k);
if (fx==0).
{.
root=fx; break;
}.
if (fx*fl<0).
{.
r=xp; fr=fx;
}.
else.
{.
l=xp; fl=fx;
}.
if (r-l-p<0)root=(r+l)/2;
}while (r-l-p>=0);
tc (13);rpr («Корень уравнения X = «);
cpr («%f «, root);
tc (7);rpr («Нажмите любую клавишу…»);
getch ();
delete [] k;
break;
case 2: draw_window («HELP «, 1, 80, 1, 23, 10, 0);
if ((hlp=fopen («c:hlp.txt» ," rt"))==NULL).
{.
gxy (10,8);tc (4);rpr («Файл не найден! «);
gxy (10,9);tc (7);rpr («Нажмите любую клавишу…»);
getch (); break;
}.
xc=2,yc=2;
tc (11);
while (!feof (hlp)).
{.
s[0]='';
fscanf (hlp," %s" ,&s);
strcat (s," «);
if (xc+strlen (s)>79){xc=2;yc++;}.
gxy (xc, yc); rpr (s);
xc+=strlen (s);
}.
rpr (««); tc (15);
putch (179);rpr («Нажмите любую клавишу…»);
getch (); break;
case 3: exit (0);
default:break; }.
}.
}.