Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Лістинг модуля 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='\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='\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\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++)

FPMeny1[h].setwidth(100);

FPMeny1[0].setpos(227,57,"По Лагранжу");

FPMeny1[1].setpos(227,57+19,"По Ньютону");

 

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

FPMeny2[h].setwidth(100);

FPMeny2[0].setpos(227,57+19,"По Лагранжу");

FPMeny2[1].setpos(227,57+19+19,"По Ньютону");

 

}

 

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

 

void DoSome(int i)

{

switch (i)

{

case 0:

closegraph();exit(1);

break;

case 1:

DrowMenyAll(FMeny1,Meny1,0);

BoolMeny1=1;

break;

case 2:

DrowMenyAll(FMeny2,Meny2,0);

BoolMeny2=1;

break;

 

case 3:DrowMenyAll(FMeny3,Meny3,0);

BoolMeny3=1;break;

 

case 4: closegraph();exit(0); break;

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

case 20:messageaboutavt();break;

case 21:messageabout();;break;

case 22:;break;

case 23:;break;

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

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

case 30:;break;

case 31:break;

case 32:;break;

case 33:;break;

case 34:windows(3,50,630,406,7,"",1);break;

 

case 40:

/* int dy=30,dx=20;

for (int i=0;i<110;i++)

{

putpixel(i+dx,dy*IntLang(i)+120,4);

 

putpixel(i+dx,dy*IntNuton1(i)+120,2);

 

putpixel(i+dx,dy*IntNuton2(i)+120,1);

 

if ((i%20)==0)

{

setcolor(4);

circle(i+dx,dy*IntLang(i)+120,2);

setcolor(2);

circle(i+dx,dy*IntNuton1(i)+120,2);

setcolor(1);

circle(i+dx,dy*IntNuton2(i)+120,2);

}

}

*/

 

 

edit1[0].setpos(200,200,"Введiть файл","");

EditEnter(edit1,FEdit1);

if (exittru==27) break;

 

 

if ((in = fopen(edit1[0].gettext(), "wt")) == NULL)

{

fprintf(stderr, "Cannot open input file.\n");

break;

}

 

fprintf(in,"Результати роботи\n");

 

if (Tt!=-1000)

{

fprintf(in," Iнтерполяцiя по Лагранжу\n");

fprintf(in,"T=%10.5f\n",Tt);

fprintf(in,"Q=%10.5f\n",FLTt);

E=fabs(FLTt/6006);

fprintf(in,"e=%10.5f\n",E);

}

 

if (Ttn!=-1000)

{

 

fprintf(in," Iнтерполяцiя по Ньютону\n");

fprintf(in,"T=%10.5f\n",Ttn);

fprintf(in,"Q=%10.5f\n",FNTt1);

E=fabs(FNTt1-IntLang(Ttn));

fprintf(in,"e=%10.5f\n",E);

}

fclose(in);

break;

case 41:

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

setcolor(4);

mouseoff();

outtextxy(240,80,"Результати роботи");

 

 

if (Tt!=-1000)

{

 

setcolor(1);

outtextxy(50,150," Iнтерполяцiя по Лагранжу");

 

sprintf(sd,"T=%10.5f",Tt);

outtextxy(40,170,sd);

 

sprintf(sd,"Q=%10.5f",FLTt);

outtextxy(40,190,sd);

 

E=fabs(FLTt/6006);

 

sprintf(sd,"e=%10.5f",E);

outtextxy(40,210,sd);

}


if (Ttn!=-1000)

{

 

setcolor(1);

outtextxy(50,250," Iнтерполяцiя по Ньютону");

 

sprintf(sd,"T=%10.5f",Ttn);

outtextxy(40,270,sd);

 

sprintf(sd,"Q=%10.5f",FNTt1);

outtextxy(40,290,sd);

 

E=fabs(FNTt1-IntLang(Ttn));

 

sprintf(sd,"e=%10.5f",E);

outtextxy(40,310,sd);

}

mouseon();

break;

 

case 42:

fprintf(stdprn,"Rezult\r\n");

 

if (Tt!=-1000)

{

fprintf(stdprn," Interpol LAGRANG\r\n");

fprintf(stdprn,"T=%10.5f\r\n",Tt);

fprintf(stdprn,"Q=%10.5f\r\n",FLTt);

E=fabs(FLTt/6006);

fprintf(stdprn,"e=%10.5f\r\n",E);

}

 

if (Ttn!=-1000)

{

 

fprintf(stdprn," Interpol NUTON\r\n");

fprintf(stdprn,"T=%10.5f\r\n",Ttn);

fprintf(stdprn,"Q=%10.5f\r\n",FNTt1);

E=fabs(FNTt1-IntLang(Ttn));

fprintf(stdprn,"e=%10.5f\r\n",E);

}

fprintf(stdprn, "\f");

break;

 

case 100:;

case 110:

edit1[0].setpos(200,200,"Введiть t (по Лагр.)","");

EditEnter(edit1,FEdit1);

if (exittru==27) break;

 

Tt=atof(edit1[0].gettext());

FLTt=IntLang(Tt);

//printf("\n f(%f)= %10.10f %10.10f %10.10f ",Tt,FLTt,FNTt1,FNTt2);

break;

case 101:;

case 111:

edit1[0].setpos(200,200,"Введiть t (по Ньютону)","");

EditEnter(edit1,FEdit1);

 

if (exittru==27) break;

 

Ttn=atof(edit1[0].gettext());

//FLTt=IntLang(Ttn);

if (Ttn<50)

FNTt1=IntNuton1(Ttn);

else

FNTt1=IntNuton2(Ttn);

//printf("\n f(%f)= %10.10f %10.10f %10.10f ",Tt,FLTt,FNTt1,FNTt2);

break;

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

}

}


Date: 2015-09-18; view: 305; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию