Смекни!
smekni.com

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

int getcol()const {return color;};

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

const char* gettext(){return text;};

void mousemove(int i);

void onkeypress(int i);

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

private:

int width;

int height;

int top;

int left;

int onoff;

int color;

char *caption;

char text[20];

};

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

{

strcpy(text,texts);

left=x;

top=y;

caption=capt;

if (i) EditDrow();

}

TEdit::TEdit()

{

caption='\0';

text[0]='2';

text[1]='3';

text[2]='\0';

width=170;

height=18;

top=0;

left=0;

color=coloredit;

onoff=0;

}

void TEdit::EditDrow()

{

int i;

int x=left;

int y=top;

int xx=width;

int yy=height;

setfillstyle(1,color);

setlinestyle(0,0,0);

mouseoff();

bar(x,y,x+xx,y+yy);

setcolor(8);

line(x-1,y-1,x-1,y+yy+1);

line(x-1,y-1,x+xx+1,y-1);

setcolor(15);

line(x,y+yy+1,x+xx+1,y+yy+1);

line(x+xx+1,y,x+xx+1,y+yy+1);

moveto(6+x,6+y);

setcolor(color+10);

outtext(text);

line(x+strlen(text)*8+6,y+15,x+strlen(text)*8+10,y+15);

moveto(x,y-15);

setcolor(color+13);

outtext(caption);

if (onoff) setcolor(11);

else setcolor(colordialog);

rectangle(x-4,y-4,x+xx+4,y+yy+4);

mouseon();

}

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

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

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

TEdit *TempEdit, edit1[FEdit1];

// char *strrez[FEdit];

int exittru=1;

void TEdit::mousemove(int i)

{

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

{

if (!onoff)

if (getbutton(1))

{

int j;

for ( j=0;j<FEdit;j++)

if ((i!=j)&&(TempEdit[j].getonoff())) TempEdit[j].setonoff(0);

setonoff(1);

}

}

}

void TEdit::onkeypress(int i)

{

if ((onoff)&&(kbhit()))

{

char c=getch();

switch (c)

{

case 8: if (strlen(text))

{

text[strlen(text)-1]='&bsol;0';

EditDrow();

}break;

case 9: setonoff(0);

if (i==(FEdit-1)) TempEdit[0].setonoff(1);

else TempEdit[i+1].setonoff(1);break;

case 13:exittru=13;break;

case 27:exittru=27;break;

case 0:

switch (getch())

{

case 72:

setonoff(0);

if (i==0) TempEdit[FEdit-1].setonoff(1);

else TempEdit[i-1].setonoff(1);

break;//up

case 80:

setonoff(0);

if (i==(FEdit-1)) TempEdit[0].setonoff(1);

else TempEdit[i+1].setonoff(1);

break;//down

};break;

}

if (((c>=32)||(c<0))&&(strlen(text)<19))

{

int slen=strlen(text);

text[slen]=c;

text[slen+1]='&bsol;0';

EditDrow();

}

}

}

void EditInitall()

{

edit1[0].setpos(200,200,"","");

}

void EditInit()

{

TempEdit[0].setonoff(1,0);

int i;

for (i=1;i<FEdit;i++)

TempEdit[i].setonoff(0,0);

xy1=TempEdit[0].getleft()-10;

yy1=TempEdit[0].gettop()-45;

xy2=TempEdit[FEdit-1].getleft()+TempEdit[FEdit-1].getwidth()+10;

yy2=TempEdit[FEdit-1].gettop()+TempEdit[FEdit-1].getheight()-yy1+10;

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

arrow = malloc(size);

mouseoff();

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

mouseon();

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

windows(xy1+2,yy1+2,xy2-xy1-2,18,1,"Ввiд",1);

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

{

TempEdit[i].EditDrow();

}

}

void EditEnter(TEdit *edit1, int rrr)

{

int i;

FEdit=rrr;

TempEdit=edit1;

EditInit();

exittru=0;

while (!exittru)

{

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

{

TempEdit[i].onkeypress(i);

TempEdit[i].mousemove(i);

}

}

mouseoff();

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

mouseon();

free(arrow);

}

/////////////////////// END DIALOG ////////////////////////////////

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

#include <graphics.h>

#include "mouse.h"

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

{

int i;

setfillstyle(1,color);

setlinestyle(0,0,0);

mouseoff();

bar(x,y,x+xx,y+yy);

if (p) setcolor(8);

else setcolor(15);

line(x-1,y-1,x-1,y+yy+1);

line(x-1,y-1,x+xx+1,y-1);

if (! p) setcolor(8);

else setcolor(15);

line(x,y+yy+1,x+xx+1,y+yy+1);

line(x+xx+1,y,x+xx+1,y+yy+1);

if (! p) moveto(5+x,5+y);

else moveto(6+x,6+y);

setcolor(color+10);

outtext(s);

mouseon();

}

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

#include <math.h>

#include <stdlib.h>

#include <string.h>

#include <process.h>

const N=6;

float x[N]={0, 20, 40, 60, 80, 100},

y[N]={-0.67, -0.254, 0.171, 0.609, 1.057, 1.517};

//float x[N]={1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7},

// y[N]={1, 0.90909, 0.83333, 0.76923, 0.71329, 0.66667, 0.625, 0.58824};

float

dy0=y[1]-y[0];

int COO=0;

float H=x[1]-x[0];

double stepin(double x1,int f)

{

if (f==0) return 1.0;

double rez=x1;

for (int i=1;i<f;i++)

rez*=x1;

// printf("&bsol;nx1=%f ^=%d rez=%f if_0=%d",x1,f,rez, rez==0);

return rez;

}

double faktorial(int k)

{

double rez=1;

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

rez*=i;

// printf("&bsol;n fact(%d)=%f",k,rez);

return rez;

}

double GetA(int i)

{

// if (i) return (stepin(((y[i]-y[i-1])/H),i)*(1/faktorial(i)));

if (i) return (stepin((dy0),i)/(faktorial(i)*stepin(H,i)));

else

return y[0];

}

double IntNuton1(double X1) //Интерполяц по NUTON 1

{

// return 0;

double D,S;

S=0;

int i,j;

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

{

D=GetA(i);

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

{

D*=(X1-x[j]);

}

S+=D;

// printf("&bsol;nS=%10.10f",S);

}

return S;

}

double GetB(int i)

{

if (i) return (stepin(((y[N-i]-y[N-i-1])/H),i)*(1/faktorial(i)));

else

return y[N-1];

}

double IntNuton2(double X1) //Интерполяц по NUTON 2

{

// return 0;

double D,S;

S=0;

int i,j;

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

{

D=GetB(i);

for (j=(N-1);j>=(N-i);j--)

{

D*=(X1-x[j]);

}

S+=D;

}

return S;

}

double IntLang(double X1) //Интерполяц по Лагранджу

{

// return 0;

// printf("&bsol;n%d",COO++);

double D,S;

S=0;

int i,j;

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

{

D=1;

for (j=0;j<N;j++)

{

if (i!=j) D*=(X1-x[j])/(x[i]-x[j]);

}

S+=D*y[i];

}

return S;

}

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

#include <dos.h>

#include <conio.h>

#include <stdio.h>

#include <process.h>

struct REGPACK reg;

//инициализирует мышу

int mouseinit()

{ reg.r_ax=0;

intr(0x33,&reg);

if (!reg.r_ax) {

textcolor(15+128);

gotoxy(23,10);printf("╔═════════E R R O R═════════╗");

gotoxy(23,11);printf("║ MOUSE IS NOT PRESENT! ║");

gotoxy(23,12);printf("║ Press any key ..... ║");

gotoxy(23,13);printf("╚═══════════════════════════╝");

getch();

textcolor(7);

return 1;

}

return 0;

}

//показывает курсор мыши

void mouseon()

{

reg.r_ax=1;

intr(0x33,&reg);

}

//прячет курсор мыши

void mouseoff()

{

reg.r_ax=2;

intr(0x33,&reg);

}

// возвращает координаты мыши

void getmousexy(int *x,int *y)

{

reg.r_ax=3;

intr(0x33,&reg);

*x=reg.r_cx;

*y=reg.r_dx;

}

//устанавливает координаты

void setmousexy(int x,int y)

{

reg.r_cx=x;

reg.r_dx=y;

reg.r_ax=4;

intr(0x33,&reg);

}

const left=1;

const right=2;

int getbutton(int but)

{

reg.r_ax=5;

reg.r_bx=but;

intr(0x33,&reg);

return (reg.r_ax)==but;

}

int mousein(int x1,int y1,int x2,int y2)

{

int x,y;

getmousexy(&x,&y);

if (x>=x1 & x<=x2 & y>=y1 & y<=y2) return 1; else return 0;

}


Додаток В

Структура дискети