extern double newton(double xn,double yn);
extern double iterac(double xn,double yn);
int main(void)
{
//запрос начального приближения у пользователя
scanf("%f",&x);
scanf("%f",&y);
//вывод результатов через вызовы функций на экран
printf ("Окончательное решение по методу Ньютона\n");
printf ("%g\t%g\n", newton(x,y));
printf ("Окончательное решение по методу итераций\n");
printf ("%g\t%g\n", iterac(x,y));
return (0);
}
//функция решения системы уравнений методом ньютона
double newton(double xn,double yn)
{
double f1,f2,xxn,yyn;
double df1dx,df1dy,df2dx,df2dy,dxy;
do
{
i++;
//описания исходных ураванений
f1=sin(xn+a)+b*yn+c;
f2=cos(yn+d)+e*xn;
//производные
df1dx=cos(xn+a);
df1dy=b;
df2dx=e;
df2dy=-sin(yn+d);
//якобиан системы
dxy=df1dx*df2dy-df1dy*df2dx;
//очередное значение х
xxn=xn-((f1*df2dy-f2*df1dy)/dxy);
//очередное значение y
yyn=yn+((f1*df2dx-f2*df1dx)/dxy);
//проверка точности решения и окончания счета
if (fabs(xxn-xn)<eps||fabs(yyn-yn)<eps) goto b;
//изменение текущих значений переменных х и у
xn=xxn; yn=yyn;
}
while (1);
b: return (xxn,yyn);
}
//решение системы уравнений методом простых итераций
double iterac(double xi, double yi)
{
double xxi,yyi;
do
{
i++;
//явное выражение переменной x
xxi=-cos(yi+d)/e;
//явное выражение переменной y
yyi=-(sin(xi+a)+c)/b;
//проверка точности решения и ококнчания счета
if (fabs(xxi-xi)<eps||fabs(yyi-yi)<eps) goto c;
//изменение текущих значений
xi=xxi;yi=yyi;
}
while(1);
c: return (xxi,yyi);
}
Приложение 2
//
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <math.h>
#define NFONTS 11
char *Fonts[NFONTS] = {
"Default_Font", "Triplex_Font", "Small_Font",
"SansSerif_Font", "Gothic_Font", "Script_Font", "Simplex_Font", "TriplexScript_Font",
"Complex_Font", "European_Font", "Bold_Font"
};
int xmax,ymax,i=0,MaxColors;
//
//прототипыфункций
//
void demoline(void);
void democircle(void);
void demopix(void);
void demopieslice(void);
void demotext (void);
void MainWindow(char *header);
void DrawBorder(void);
void StatusLine(char *msg);
void demoarcs(void);
void demobars(void);
void demo3dbars(void);
void diagram(void);
void endpage(void);
void endpage1(void);
void endpage2(void);
//
//начало главной функции
//
int main(void)
{
/* автоматическое определение типа видеоадаптера */
int gdriver = DETECT, gmode, errorcode;
char msg[80];
// инициализация графических и локальных переменных
initgraph(&gdriver, &gmode, "");
xmax=getmaxx();
ymax=getmaxy();
// проверка результатов инициализации
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
//вызовыфункций
demoline();
demopix();
demobars();
demo3dbars();
demopieslice();
diagram();
democircle();
demoarcs();
demotext();
endpage();
endpage1();
endpage2();
cleardevice();
closegraph();
return 0;
}
//
//функциядемонстрациилиний
//
void demoline(void)
{
//формирование графического окна и статусной строки
MainWindow( "Line demonstration" );
StatusLine( "Press any key to continue..." );
//процессрисованиялиний
do
{
setcolor( random( MaxColors - random(15) ) + random(15) );
lineto (xmax,i);
lineto (xmax,ymax);
lineto (i,ymax);
lineto (i+1,i+1);
i=i+1;xmax=xmax-1;ymax=ymax-1;
}
while (xmax!=(xmax/2));
getch();
cleardevice();
clearviewport();
}
//
//функциядемонстрацииокружностей
//
void democircle(void)
//xmax=getmaxx();
//ymax=getmaxy();
{
MainWindow( "Circle demonstration" );
StatusLine( "Press any key to continue..." );
randomize();
moveto(random(xmax),random(ymax));
do
{
i++;
//установкаслучайногоцвета
setcolor( random( MaxColors - random(15) ) + random(15) );
circle(random(getmaxx()),random(getmaxy()),random(100));
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
clearviewport();
i=1;
do
{
i++;
setcolor( random( MaxColors - random(15) ) + random(15) );
circle(getmaxx()/2,getmaxy()/2,i);
if (i==400)
{setcolor(0);
do
{i--;circle(getmaxx()/2,getmaxy()/2,i);}
while(i!=0);}
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
cleardevice();
}
//
//функция демонстрации рисования точек в произвольном //порядке
//
void demopix(void)
{
MainWindow( "Pix demonstration" );
StatusLine( "Press any key to continue..." );
do
{
i++;
setcolor( random( MaxColors - random(15) ) + random(15) );
putpixel(random(getmaxx()),random(getmaxy()),random(15));
}
while( !kbhit() ); // повторение пока не нажата клавиша
xmax=getmaxx();
ymax=getmaxy();
getch();
cleardevice();
}
//
//функция демонстрации рисования секторов
//
void demopieslice(void)
{
MainWindow( "Pie Chart Demonstration" );
StatusLine( "Press any key to continue..." );
do
{
i++;
setcolor(random( MaxColors - random(15) ) + random(15));
setfillstyle(random(12), getmaxcolor());
// setcolor(random( MaxColors - random(15) ) + random(15));
pieslice(random(getmaxx()),random(getmaxy()),
random(360),random(360),random(150));
if(i>1000) {clearviewport();i=0;}
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
clearviewport();
}
//
//круговая диаграмма
//
void diagram(void)
{
int sektors[] = {20,10,35,15,20};
char *percent[]={"20%","10%","35%","15%","20%"};
int secsize,k=0,i,r=150;
MainWindow( "Pie Chart Demonstration" );
StatusLine( "Press any key to continue..." );
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(5,0,2);//установкаатрибутовтекста
outtextxy( getmaxx()/2,25,"This is the pie chart diagramm");
//процесс рисования диаграммы по данным из массива
for( i=0;i<5;i++)
{
secsize = (360 * sektors[i])/100;
setfillstyle(i,i);
pieslice((getmaxx()/2),(getmaxy()/2),k,k+secsize,r);
k = k+secsize;
}
//подписипроцентов
outtextxy( getmaxx()/2+r+30,getmaxy()/2-70,percent[0]);
outtextxy( getmaxx()/2,getmaxy()/2-r-30,percent[1]);
outtextxy( getmaxx()/2-r-30,getmaxy()/2,percent[2]);
outtextxy( getmaxx()/2,getmaxy()/2+r+30,percent[3]);
outtextxy( getmaxx()/2+r+20,getmaxy()/2+50,percent[4]);
getch();
settextstyle(0,0,0);
clearviewport();
}
//
//функция демонстрации текста в графическом окне
//
void demotext(void)
{
int midx,midy,i;
MainWindow( "Demonstration text in the graphics screen" );
StatusLine( "Press any key to continue..." );
settextjustify(CENTER_TEXT,CENTER_TEXT);
midx=getmaxx()/2;
midy=getmaxy()/2;
outtextxy( midx,midy-40,"This programm will demonstrate to you all graphics");
outtextxy( midx,midy+40,"functions of the C++ language");getch();clearviewport();
for (i=0;i<11;i++)
{
settextstyle(i,0,0);
outtextxy(midx,midy-40,"This text is write by ");
outtextxy(midx,midy+40,Fonts[i]);
getch();clearviewport();
}
settextstyle(0,1,1); //выводвертикальноготекста
outtextxy(midx,midy,"This programm created by Grinjoff Mark");
settextstyle(0,0,0);/*возвращениеи исходного начертания текста */
getch();
clearviewport();
}
//
//функция демонстрации рисования дуг и многоугольников
//
void demoarcs(void)
{
int poly[10];
MainWindow( "Arcs and polygons demonstration" );
StatusLine( "Press any key to continue..." );
xmax=getmaxx();
ymax=getmaxy();
i=0;
//рисование дуг с произвольным расположением и цветом
do
{
i++;
setcolor(random( MaxColors - random(15) ) + random(15));
arc(random(xmax),random(ymax),random(358),random(358),random(100));
if(i>10000) {clearviewport();i=0;}
}
while( !kbhit() ); // повторениепоканенажатаклавиша
getch();
clearviewport();
i=0;
//рисование многоугольников с произвольным цветом
do
{
i++;
poly[0] = random(i+random(20));//1-вершина
poly[1] = random(random(ymax)/i+2);
poly[2] = xmax-(i+20); /* 2-я */
poly[3] = i+20;
poly[4] = xmax-(i+50); /* 3-я */
poly[5] = ymax-(i+20);
poly[6] = i+xmax/2; /* 4-я */
poly[7] = i+ymax/2;
/*
drawpoly автоматически не закрывает многоугольник
поэтому необходимо это сделать самому
*/
poly[8] = poly[0];
poly[9] = poly[1];
//рисует многоугольники, изменяя координаты вершин
setcolor(random( MaxColors - random(15) ) + random(15));
drawpoly(5, poly);
if(i>1000) {clearviewport();i=0;}
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
clearviewport();
}
//
//функция демонстрации закрашеных многоугольников и //цветов
//
void demobars(void)
{
MainWindow( "Bars and colors demonstration" );
StatusLine( "Press any key to continue..." );
int kxb=15,kyb=15;
double stx,sty,x,y;
stx=floor(getmaxx()/kxb);
sty=floor(getmaxy()/kyb);
do
{
for(x=3;x<getmaxx();x+=stx){
for(y=3;y<getmaxy();y+=sty){
setcolor(random( MaxColors - random(15) ) + random(15));
setfillstyle(SOLID_FILL,random(getmaxcolor()));
bar(x+3,y+3,x+stx-3,y+sty-3);}}
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
clearviewport();
}
//
//функция демонстрации трехмерных прямоугольников
//
void demo3dbars(void)
{
int i;
MainWindow( "3D Bars demonstration" );
StatusLine( "Press any key to continue..." );
do
{
i++;
setcolor(random( MaxColors - random(15) ) + random(15));
setfillstyle(random(5),random(getmaxcolor()));
bar3d( random( getmaxx() ), random( getmaxy() ),
random( getmaxx() ), random( getmaxy() ),10,1);
for(float j=0;j<50000;j++);//эмуляторзадержки
if(i>100) {clearviewport();i=0;}
}
while( !kbhit() ); // повторениепоканенажатаклавиша
getch();
clearviewport();
}
//
//функция создания завершающей страницы
//
void endpage(void)
{
MainWindow( "The cycle" );
StatusLine( "Press any key to continue..." );
int i,j,rad=50;
do
{
for (i=0;i<359;i++)
{
setcolor(random( MaxColors - random(15) ) + random(15));
pieslice(60,60,i,i+1,rad);
pieslice(580,60,i,i+1,rad);
pieslice(60,390,i,i+1,rad);
pieslice(580,390,i,i+1,rad);
}
for (i=0;i<getmaxx();i++)
{
setcolor(random( MaxColors - random(15) ) + random(15));
line(getmaxx()/2,10,i,getmaxy()/2);
line(getmaxx()/2,440,i,getmaxy()/2);
}
setcolor(0);
for (i=0;i<getmaxx();i++)
{
line(getmaxx()/2,10,i,getmaxy()/2);
line(getmaxx()/2,440,i,getmaxy()/2);
}
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
clearviewport();
}
//
//функция калейдоскопа
//
void endpage1(void)
{
MainWindow( "The simple kaleidoscope" );
StatusLine( "Press any key for exit to DOS" );
int koord1[4],koord2[4],koord3[4];
//получение координат исходной линии
koord1[0]=random((getmaxx()/2)+10);
koord1[1]=random((getmaxy()/2)+10);
koord1[2]=random((getmaxx()/2)+10);
koord1[3]=random((getmaxy()/2)+10);
//получение координат конечной линии
koord2[0]=random((getmaxx()/2)+10);
koord2[1]=random((getmaxy()/2)+10);
koord2[2]=random((getmaxx()/2)+10);
koord2[3]=random((getmaxy()/2)+10);
//прорисовка
do
{
for (float t=0;t<1;t=t+0.01) //количество линий
{
for (int l=0;l<4;l++) //нахождение координат движения //линии
{koord3[l]=floor(koord2[l]*(1-t)+koord1[l]*t);}
setcolor(random( MaxColors - random(15) ) + random(15));
line(koord3[0],koord3[1],koord3[2],koord3[3]); //первая //четверть
line(getmaxx()-koord3[0],koord3[1],getmaxx()-koord3[2],koord3[3]);//втораячетверть
line(koord3[0],getmaxy()-koord3[1],koord3[2],getmaxy()-koord3[3]);//третьячетверть
line(getmaxx()-koord3[0],getmaxy()-koord3[1],
getmaxx()-koord3[2],getmaxy()-koord3[3]);//четвертаячетверть
}
for (int p=0;p<4;p++)//переприсвоение координат
{koord2[p]=koord1[p];}
//получение новых координат первой линии
koord1[0]=random(getmaxx()/2);
koord1[1]=random(getmaxy()/2);
koord1[2]=random(getmaxx()/2);
koord1[3]=random(getmaxy()/2);
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
clearviewport();
}
//
//последняя страница
//
void endpage2(void)
{
MainWindow( "The end" );
StatusLine( "Press any key for exit to DOS" );
do
{
settextstyle(BOLD_FONT,0,2);
outtextxy(getmaxx()/2,getmaxy()/2,"The end ");
}
while( !kbhit() );
getch();
clearviewport();
}
//
//функциясозданияграфическогоокна
//
void MainWindow( char *header )
{
int height;
xmax=getmaxx();