Применение языков программирования высокого уровня для реализации численных методов и прикладных программ
Рефераты >> Программирование и компьютеры >> Применение языков программирования высокого уровня для реализации численных методов и прикладных программ

Используемые технические средства. Для правильного функционирования программы необходимо применять следующие компоненты аппаратного комплекса: персональный компьютер класса Ix86 с 640Кб ОЗУ, оснащенный одним накопителем на гибком магнитном диске 720Кб или накопителем типа «винчестер», а так же видеоадаптером EGA или VGA (предпочтительно).Компьютер рекомендуется оснастить видеомонитором, соответствующим видеоадаптеру.

Вызов и загрузка. Для вызова программы необходимо в командой строке ДОС набрать полное имя основного модуля. Никаких параметров в командной строке не требуется.

Входные и выходные данные. Входными и выходными данными для программы является файл (файлы) данных пользователя и выводит информацию, содержащуюся в них на экран дисплея.

Приложения

приложение 1

#include <stdio.h>

#include <math.h>

//описание переменных, используемых в программе

double pi=3.14,a=1.8,b=-2.0,c=0.1,d=1.6,e=0.9,eps=0.000001;

int i=0;

double x,y;

//описания функций решения методами Ньютона и простых итераций

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 ." );


Страница: