RSS    

   Расчет площади сложной фигуры с помощью метода имитационного моделирования - (реферат)

p>При разработке программы автор упустил возможность работы с числовыми массивами. Поэтому, можно улучшить программу переписав ряд процедур под массивы , что сделает программу менее массивной и более наглядной. Широкое возможности по улучшению программы в области разработки алгоритмов ввода различный классов функций.

    Приложение 1. Текст программы.
    Файл sq. c
    /*
    Пpогpамма SQ основная
    */
    #include
    #include
    #include
    #include
    #include
    #include "matim. c"
    #include "window. c"
    #include "f_integr. c"
    #include "draft. c"
    #include "draft_f. c"
    #include "draft_e. c"
    int k=20, i=15, l=270, j=140;
    void main(void)
    {

float b0, b1, b2, b3, c0, c1, c2, c3, x1, x2, maxb, maxc, minb, minc, min, max, S; int N;

    do{
    closegraph();

get_poly(&b3, &b2, &b1, &b0, &c3, &c2, &c1, &c0, &x1, &x2, &N);

    f_max(b3, b2, b1, b0, x1, x2, &minb, &maxb);
    f_max(c3, c2, c1, c0, x1, x2, &minc, &maxc);
    max=(maxb>maxc)? maxb: maxc;
    min=(minb    S=i_num(b3, b2, b1, b0, c3, c2, c1, c0, x1, x2);
    init();

draft_f(b3, b2, b1, b0, c3, c2, c1, c0, x1, x2, min, max, k, i, l, j);

draft_e(b3, b2, b1, b0, c3, c2, c1, c0, x1, x2, min, max, S, k, i+180, l+100, j+160, N); setcolor(2);

    outtextxy(0, 340, " Press q for exit ");
    } while (( getch()) ! = 'q');
    }
    Файл matim. c

/* Подпpогpамма содеpжит пpоцедуpы математической обpаботки функций*/ #include

    #include
    #include
    #include
    #include
    /* Вычисление максимального и минимального
    значения функции на заданом интеpвале */

void f_max(float a3, float a2, float a1, float a0, float x1, float x2, float *amin, float *amax)

    {
    float dx, x, Fx, Fx1, Fmax, Fmin;
    dx=(x2-x1)/500;
    x=x1;
    Fx1=a3*x*x*x+a2*x*x+a1*x+a0;
    Fmax=Fx1;
    Fmin=Fx1;
    do {
    x=x+dx;
    Fx=a3*x*x*x+a2*x*x+a1*x+a0;
    if (Fx>=Fmax)
    Fmax=Fx;
    if (Fx    Fmin=Fx;
    } while ( x    *amin=Fmin;
    *amax=Fmax;
    }
    /*Вычисление коpней кубичного уpавнения */

int f_root(float a0, float a1, float a2, float a3, float x1, float x2, float e, float *k1, float *k2, float *k3)

    { float ku1, ku2, ku3, x, a, b;
    int c=0;
    x=x1;
    do
    {
    a=a3*pow(x, 3)+a2*pow(x, 2)+a1*x+a0;
    x+=e;
    b=a3*pow(x, 3)+a2*pow(x, 2)+a1*x+a0;
    if (a*b    { c++;
    switch(c) {
    case 1: ku1=x;
    break;
    case 2: ku2=x;
    break;
    case 3: ku3=x;
    break;

default: printf("\n Внимание ! !! \n Ошибка в matim. c (f_root). "); break;

    };
    }
    } while (x    *k1=ku1;
    *k2=ku2;
    *k3=ku3;
    return c;
    }
    float fun(float a3, float a2, float a1, float a0, float x)
    {
    float s;
    s=a3*x*x*x+a2*x*x+a1*x+a0;
    return (s);
    }
    Файл window. c
    /* Подпpогpаммы pаботы с окнами*/
    #include
    #include
    #include
    #include
    #include
    /*функция pисования pамки окна */
    void border(int sx, int sy, int ex, int ey){
    int i;
    for (i=sx+1; i    gotoxy(i, sy);
    putch(205);
    gotoxy(i, ey);
    putch(205);
    }
    for (i=sy+1; i    gotoxy(sx, i);
    putch(186);
    gotoxy(ex, i);
    putch(186);
    }
    gotoxy(sx, sy); putch(201);
    gotoxy(sx, ey); putch(200);
    gotoxy(ex, sy); putch(187);
    gotoxy(ex, ey); putch(188);
    }
    void talkerror(void)
    {
    textcolor(15);
    textbackground(4);
    gotoxy(1, 18);

cprintf(" ATTATETION ! DATE ERROR . Press any key to continue.... "); sound(1700); delay(100); nosound(); delay(100);

    sound(1400); delay(100); nosound();
    getch();
    gotoxy(1, 18);
    textcolor(15);
    textbackground(1);
    clreol();
    }

void get_poly(float *bo3, float *bo2, float *bo1, float *bo0, float *co3, float *co2, float *co1, float *co0, float *xo1, float *xo2, int *No)

    {
    float b3, b2, b1, b0, c3, c2, c1, c0, x1, x2;
    int xb1=5, yb1=4, xb2=76, yb2=22, c, k=3, k1=10, k2=50, N;
    char

bc0[5], bc1[5], bc2[5], bc3[5], cc0[5], cc1[5], cc2[5], cc3[5], x1c[5], x2c[5], nc[5]; textbackground(11);

    clrscr();
    window(xb1, yb1, xb2, yb2);
    textcolor(15);
    textbackground(1);
    clrscr();
    do {
    textcolor(15);
    textbackground(1);
    gotoxy(k1, k); puts("b3= ");
    gotoxy(k1, k+1); puts("b2= ");
    gotoxy(k1, k+2); puts("b1= ");
    gotoxy(k1, k+3); puts("b0= ");
    gotoxy(k2, k); puts("c3= ");
    gotoxy(k2, k+1); puts("c2= ");
    gotoxy(k2, k+2); puts("c1= ");
    gotoxy(k2, k+3); puts("c0= ");
    gotoxy(k1, k+6); puts("x1=");
    gotoxy(k2, k+6); puts("x2=");
    gotoxy(k1, k+10); puts("QUANTITY OF ADRESSES TO RNG ");
    B3: gotoxy(k1, k); puts("b3= ");
    gotoxy(k1+4, k); gets(bc3); sscanf(bc3, "%f", &b3);
    if (fabs(b3)>100) { talkerror(); goto B3; }
    B2: gotoxy(k1, k+1); puts("b2= ");
    gotoxy(k1+4, k+1); gets(bc2); sscanf(bc2, "%f", &b2);
    if (fabs(b2)>100) { talkerror(); goto B2; }
    B1: gotoxy(k1, k+2); puts("b1= ");
    gotoxy(k1+4, k+2); gets(bc1); sscanf(bc1, "%f", &b1);
    if (fabs(b1)>100) { talkerror(); goto B1; }
    B0: gotoxy(k1, k+3); puts("b0= ");
    gotoxy(k1+4, k+3); gets(bc0); sscanf(bc0, "%f", &b0);
    if (fabs(b0)>100) { talkerror(); goto B0; }
    C3: gotoxy(k2, k); puts("c3= ");
    gotoxy(k2+4, k); gets(cc3); sscanf(cc3, "%f", &c3);
    if (fabs(c3)>100) { talkerror(); goto C3; }
    C2: gotoxy(k2, k+1); puts("c2= ");
    gotoxy(k2+4, k+1); gets(cc2); sscanf(cc2, "%f", &c2);
    if (fabs(c2)>100) { talkerror(); goto C2; }
    C1: gotoxy(k2, k+2); puts("c1= ");
    gotoxy(k2+4, k+2); gets(cc1); sscanf(cc1, "%f", &c1);
    if (fabs(c1)>100) { talkerror(); goto C1; }
    C0: gotoxy(k2, k+3); puts("c0= ");
    gotoxy(k2+4, k+3); gets(cc0); sscanf(cc0, "%f", &c0);
    if (fabs(c0)>100) { talkerror(); goto C0; }
    X1: gotoxy(k1, k+6); puts("x1= ");
    gotoxy(k2, k+6); puts("x2= ");
    gotoxy(k1+4, k+6); gets(x1c); sscanf(x1c, "%f", &x1);
    if (fabs(x1)>100) { talkerror(); goto X1; }
    X2: gotoxy(k2, k+6); puts("x2= ");
    gotoxy(k2+4, k+6); gets(x2c); sscanf(x2c, "%f", &x2);
    if (fabs(x2)>100) { talkerror(); goto X2; }
    if (x1>=x2) { talkerror(); goto X1; }

Страницы: 1, 2, 3


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.