Смекни!
smekni.com

Дослідження зміни температури термопари за допомогою чисельних методів на ЕОМ (стр. 4 из 7)

В даному випадку программа використовує функції п’ятьох стандартних модулів, та п’ятьох, розроблених самостійно. Список модулів приведений у таблиці 2.6.2.


Таблиця 2.6.2. Список бібліотек, які використовуються.

Назва модуля Принадлежність Опис
STDIO.H Стандартна бібліотека Функції вводу-виводу
CONIO.H Стандартна бібліотека Функції роботи з екраном(консолью)
IOSTREAM.H Стандартна бібліотека Потоки ввод-вивід
DOS.H Стандартна бібліотека Спеціальні функції
MATH.H Стандартна бібліотека Математичні функції
MENYS.H Власна бібліотека Головне меню програми.Бібліотека з меню та кнопками.
INTERP.CPP Власна бібліотека Основна програма.
DIALOGS.H Власна бібліотека Бібліотека з вікнами для вводу тексту.
CALC.H Власна бібліотека Бібліотека з функціями для роботи з обчисленням. Даний файл можна доробляти, редагувати в залежності від потреб користувача.
WIND.H Власна бібліотека Бібліотека малює вікна і панельки.

3 Лістинг програми

3.1 Лістинг головної програми INTERP.CPP

#include <stdio.h>

#include "menys.h"

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <process.h>

/////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////

void main(void)

{

grinit();

init();

while (1)

{

getcurcorpos();

if (kbhit())

if (getch()==0)

if (getch()==45)break;

};

closegraph();

}

3.2 Лістинг модуля MENYS.H

#include <graphics.h>

#include <string.h>

#include "wind.h"

#include "edits.h"

#include "calc.h"

#include <stdlib.h>

//---

// =0 если клавиши подняты

// =2 или на уровне панели

const Flat=2;

const coloron=10;

const coloroff=1;

const colordn=14;

const colorhead=1;

//----

int OnPMenu=0, MenN2=0;

float Tt=-1000, Ttn=-1000;// значення температури яку вводять

double FLTt,FNTt1,FNTt2;

char string[25],sd[25];

float E;

FILE *in;

const colorsel=10;

const colornotsel=1;

const ButtonColor=7;

const ButtonN=5;


const Meny1=2;

const Meny2=2;

const Meny3=3;

const Meny4=0;

const Meny5=0;

const Meny6=0;

const PMeny1=2;

const PMeny2=2;

int BoolMeny1=0;

int BoolMeny2=0;

int BoolMeny3=0;

int BoolMeny4=0;

int BoolMeny5=0;

int BoolMeny6=0;

int BoolPMeny1=0;

int BoolPMeny2=0;

void DoSome(int i);

void windows(int x,int y,int xx,int yy,int color,char s[100],int p);

class TButton

{

public:

TButton(); //Конструктор

~TButton(){}; //деструктор

virtual void Draw();


void setwidth(int x){width=x;};

void setheight(int x){height=x;};

void settop(int x){top=x;};

void setleft(int x){left=x;};

virtual void setonoff(int x){onoff=x;Draw();};

void setcol(int x){color=x;};

void setcapt(char *x){caption=x;};

int getwidth()const {return width;};

int getheight()const {return height;};

int gettop()const {return top;};

int getleft()const {return left;};

int getonoff()const {return onoff;};

int getcol()const {return color;};

const char* getcapt(){return caption;};

virtual void mousemove(int i);

virtual void setpos(int x,int y, char* capt,int i=0);

protected:

int width;

int height;

int top;

int left;

int onoff;

int color;

char *caption;

};


class TMeny:public TButton

{

public:

TMeny();

~TMeny(){};

virtual void Draw();

virtual void setonoff(int x)

{

onoff=x;

if (!onoff) color=colornotsel;

else color=colorsel;

Draw();

};

virtual void mousemove(int i);

virtual void setpos(int x,int y, char* capt,int i=0);

virtual void close(int p=0);

};

void DrowMenyAll(TMeny FirstMeny[],int FMeny, int p=0);

//////////////////////////////////////////////////////////////////////////////

//ОБЪЯВЛЕНИЕ ОБЪЕКТОВ

///////////////////////////////////////////////////////////////////////////////////////////

TButton button[ButtonN];

TMeny FMeny1[Meny1],FMeny2[Meny2],FMeny3[Meny3],

FPMeny2[PMeny2],FPMeny1[PMeny1];


//////////////////////////////////////////////////////////////////////////////////////////

void TMeny::close(int p)

{

if (!p)

{

setonoff(0);

mouseoff();

putimage(xy1-2,yy1-2, arrow, 0);

mouseon();

free(arrow);

}

else

{

setonoff(0);

mouseoff();

putimage(xy1p-2,yy1p-2, arrowp, 0);

mouseon();

free(arrowp);

}

}

void TMeny::mousemove(int i)

{

if (mousein(left,top,left+width,top+height))

{

if (!getbutton(1))

{ //Не нажата

if (!onoff) setonoff(1);

if ((BoolMeny2)&&(!OnPMenu))

switch (i)

{

case 0:

if (BoolPMeny2)

{

FPMeny2[0].close(1);

BoolPMeny2=0;

}

if (!BoolPMeny1)

{

DrowMenyAll(FPMeny1,PMeny1,1);

BoolPMeny1=1;

}

break;

case 1:

if (BoolPMeny1)

{

FPMeny1[0].close(1);

BoolPMeny1=0;

}

if (!BoolPMeny2)

{

DrowMenyAll(FPMeny2,PMeny2,1);

BoolPMeny2=1;

}

break;

}


}

else

{

if ((onoff)&&(!(MenN2)))

{

//Нажата

close(OnPMenu);

if (BoolPMeny1)

{

if (BoolMeny2) FMeny2[0].close();

DoSome(i+100);

}

else

if (BoolPMeny2)

{

if (BoolMeny2) FMeny2[0].close();

DoSome(i+110);

}

else

if (BoolMeny1) DoSome(i+20); else

if (BoolMeny2) DoSome(i+30);else

if (BoolMeny3) DoSome(i+40);else

if (BoolMeny4) DoSome(i+50);else

if (BoolMeny5) DoSome(i+60);else

if (BoolMeny6) DoSome(i+70);


BoolPMeny1=0;

BoolPMeny2=0;

BoolMeny1=0;

BoolMeny2=0;

BoolMeny3=0;

BoolMeny4=0;

BoolMeny5=0;

BoolMeny6=0;

}

}

}

else

if ((getbutton(1))&&(!OnPMenu)&&(!MenN2))

{

if (!mousein(xy1,yy1,xy2+6,yy2+yy1+4))

{

close(OnPMenu);

if (BoolPMeny1)

{

FPMeny1[0].close(1);

BoolPMeny1=0;

}

if (BoolPMeny2)

{

FPMeny2[0].close(1);

BoolPMeny2=0;

}


BoolMeny1=0;

BoolMeny2=0;

BoolMeny3=0;

BoolMeny4=0;

BoolMeny5=0;

BoolMeny6=0;

BoolPMeny1=0;

BoolPMeny2=0;

}

}

else if (onoff) setonoff(0);

}

void TMeny::setpos(int x,int y, char* capt,int i)

{

left=x;

top=y;

caption=capt;

if (i) Draw();

}

void TMeny::Draw()// Метод постройки кнопок------------

{

int i;

setfillstyle(1,7);

setlinestyle(0,0,0);

setcolor(color);

mouseoff();


bar(left,top,left+width,top+height);

moveto(5+left,5+top);

outtext(caption);

if (color==colornotsel) setcolor(7);

rectangle(left,top,left+width,top+height);

rectangle(left+2,top+2,left+width-2,top+height-2);

mouseon();

} // Метод постройки кнопок--------------------------------

TMeny::TMeny()

{

caption='&bsol;0';

width=180;

height=18;

top=0;

left=0;

color=colornotsel;

onoff=0;

}

void DrowMenyAll(TMeny FirstMeny[],int FMeny, int p)

{

if (!p)

{

xy1=FirstMeny[0].getleft()-4;

yy1=FirstMeny[0].gettop()-4;

xy2=FirstMeny[0].getleft()+FirstMeny[0].getwidth();

yy2=FirstMeny[FMeny-1].gettop()-FirstMeny[0].gettop()+FirstMeny[0].getheight()+8;

size = imagesize(xy1-2, yy1-2, xy2+6, yy1+yy2+4);

arrow = malloc(size);

mouseoff();

getimage(xy1-2, yy1-2, xy2+6, yy1+yy2+4, arrow);

int dx=(xy2-xy1+4)/5;

int dy=(yy2+2)/5;

for (int k=1;k<=5; k++)

{

windows(xy1,yy1,dx*k,dy*k,7,"",0);

delay(30);

}

mouseon();

windows(xy1,yy1,xy2-xy1+4,yy2+2,7,"",0);

windows(xy1+2,yy1+2,xy2-xy1,yy2-2,7,"",1);

for (int gg=0;gg<FMeny;gg++)

{

FirstMeny[gg].Draw();

}

}

else

{

xy1p=FirstMeny[0].getleft()-4;

yy1p=FirstMeny[0].gettop()-4;

xy2p=FirstMeny[0].getleft()+FirstMeny[0].getwidth();

yy2p=FirstMeny[FMeny-1].gettop()-FirstMeny[0].gettop()+FirstMeny[0].getheight()+8;

sizep = imagesize(xy1p-2, yy1p-2, xy2p+6, yy1p+yy2p+4);

arrowp = malloc(sizep);

mouseoff();

getimage(xy1p-2, yy1p-2, xy2p+6, yy1p+yy2p+4, arrowp);

int dx=(xy2p-xy1p+4)/5;

int dy=(yy2p+2)/5;

for (int k=1;k<=5; k++)

{

windows(xy1p,yy1p,dx*k,dy*k,7,"",0);

delay(30);

}

mouseon();

windows(xy1p,yy1p,xy2p-xy1p+4,yy2p+2,7,"",0);

windows(xy1p+2,yy1p+2,xy2p-xy1p,yy2p-2,7,"",1);

for (int gg=0;gg<FMeny;gg++)

{

FirstMeny[gg].Draw();

}

}

}

void mysound()

{

sound(1000);

delay(30);

nosound();

}


void messageabout()

{ mysound();

size=imagesize(199,99,200+241,241);

arrow=malloc(size);

getimage(199,99,200+241,241,arrow);

mouseon();

windows(200,100,240,140,7,"",0);

windows(202,102,236,15,colorhead,"Про програму",1);

setcolor(11);

mouseoff();

outtextxy(230,130," КУРСОВА РОБОТА ");

outtextxy(230,150," ");

outtextxy(230,170," iнтерполяцiя по");

outtextxy(230,190," Лагранжу i Ньютону ");

outtextxy(230,210,"");

mouseon();

while (getbutton(1));

while ((!getbutton(1))&&(!kbhit()));

mouseoff();

putimage(199,99,arrow,0);

mouseon();

free(arrow);

while (kbhit()) getch();

}

void messageaboutavt()

{ mysound();

size=imagesize(199,99,200+241,241);

arrow=malloc(size);

getimage(199,99,200+241,241,arrow);

mouseon();

windows(200,100,240,140,7,"",0);

windows(202,102,236,15,colorhead,"Про автора",1);

setcolor(11);

mouseoff();

outtextxy(230,130," КУРСОВА РОБОТА ");

outtextxy(230,150," Програму написав ");

outtextxy(230,170," ");

outtextxy(230,190," ст.гр.5AC-02 ");

outtextxy(230,210," Гега А.М.");

mouseon();

while (getbutton(1));

while ((!getbutton(1))&&(!kbhit()));

mouseoff();

putimage(199,99,arrow,0);

mouseon();

free(arrow);

while (kbhit()) getch();

}

void TButton::mousemove(int i)

{

if (mousein(left,top,left+width,top+height))

{

if (getbutton(1))

{

if (onoff!=1) setonoff(1);

}

else

if (onoff==1)

{

setonoff(0);

DoSome(i);

}

else

{

if (onoff!=Flat) setonoff(Flat);

}

}else if (onoff!=0) setonoff(0);

}

void TButton::setpos(int x,int y, char* capt,int i)

{

left=x;

top=y;

caption=capt;

Draw();

}

TButton::TButton()

{

caption='&bsol;0';

width=100;

height=18;

top=0;

left=0;

color=ButtonColor;

onoff=0;

}


void TButton::Draw()// Метод постройки кнопок------------

{

int i=onoff;

setfillstyle(1,color);

setlinestyle(0,0,0);

mouseoff();

bar(left,top,left+width,top+height);

setcolor(1);

switch (i)

{

case 0:setcolor(coloroff);break;

case 1:setcolor(colordn);break;

case 2:setcolor(coloron);break;

}

rectangle(left,top,left+width,top+height);

rectangle(left+2,top+2,left+width-2,top+height-2);

switch (i)

{

case 0:moveto(5+left,5+top);break;

case 1:moveto(6+left,6+top);break;

case 2:moveto(5+left,5+top);break;

}

if ((!Flat)&&(!i)) moveto(5+left,5+top);

outtext(caption);

mouseon();

} // Метод постройки кнопок--------------------------------


void grinit()//---Инициал графики----------------------------

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s&bsol;n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

mouseinit();

mouseon();

}//_void grinit()//-----------------------------------------------

void getcurcorpos()

{

int i;

if (BoolMeny1)

for (i=0; i<Meny1; i++)

{

if (BoolMeny1)

FMeny1[i].mousemove(i);

}//===================================

MenN2=1;

if (BoolMeny2)

for (i=0; i<Meny2; i++)

{

if (BoolMeny2)

FMeny2[i].mousemove(i);

}//====================================

MenN2=0;

if (BoolMeny3)

for (i=0; i<Meny3; i++)

{

if (BoolMeny3)

FMeny3[i].mousemove(i);

}//====================================

OnPMenu=1;

if (BoolPMeny1)

for (i=0; i<PMeny1; i++)

{

if (BoolPMeny1)

FPMeny1[i].mousemove(i);

}//===================================

if (BoolPMeny2)

for (i=0; i<PMeny2; i++)

{

if (BoolPMeny2)

FPMeny2[i].mousemove(i);

}//====================================

OnPMenu=0;


for (i=0; i<ButtonN; i++)

{

button[i].mousemove(i);

}//=======================================

}

///////////////////////////////////////////////////////////////////

//----------------------------------------------------------------

//-----------------------------------------------------------------

void init()

{

mouseoff();

cleardevice();

mouseon();

windows(1,1,637,477,7,"",0);

// windows(1,25,637,27,7,"",0);

windows(3,50,630,406,7,"",1);

windows(3,3,633,20,colorhead,"Iнтерполяцiя по Лагранжу та Ньютону",1);

// windows(1+2,20+2,637-3,27-4,7,"",1);

windows(3,460,630,17,7,"",1);

button[0].setwidth(18);

button[0].setheight(18);

button[0].setpos(615,4,"X");

button[1].setpos(5,28," Довiдка");

button[2].setpos(110,28,"Тестування");

button[3].setpos(215,28,"Результати");

button[4].setpos(320,28," Вихiд");


int h;

for (h=0;h<Meny1;h++)

FMeny1[h].setwidth(150);

FMeny1[0].setpos(10,53,"Про автора");

FMeny1[1].setpos(10,53+19,"Про програму");

for (h=0;h<Meny2;h++)

FMeny2[h].setwidth(100);

FMeny2[0].setpos(115,53, "Тест 1 >");

FMeny2[1].setpos(115,53+19,"Тест 2 >");

for (h=0;h<Meny3;h++)

FMeny3[h].setwidth(100);

FMeny3[0].setpos(220,53,"В файл");

FMeny3[1].setpos(220,53+19,"На екран");

FMeny3[2].setpos(220,53+19+19,"На друк");

for (h=0;h<PMeny1;h++)