⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tools.h

📁 该包是数据结构的实验软件,来源于合肥工业大学人工智能与数据挖掘实验室,用来实现数据结构.
💻 H
📖 第 1 页 / 共 5 页
字号:
      menunode * nextmenu,* submenu,* priormenu,* parentmenu,* curmenuitem;

     int numofmenu,command;
     int width;   //{width is num. of char}
    };
  typedef menunode  * pmenunode;
  struct menubar//        {5}
     {int row,col,forecolor,width;          //{width is num. of char}
     boolean visible;
     pmenunode curp;
     pointer bararr;
    };
  struct mymenu //         {6}
    {int numofmenus,numofselect;
     menubar mbar;
    menunametype menuname;
    int heatkey,retcode;
    int smw,smh;
    keynametype keyname;
    pmenunode firstmenu,cursubmenu;
    viewporttype smvp[9];
  };

  class  gmenubar //        {7}
    {
    public:
    int row,col,forecolor,w;
    boolean visible;
    pointer  pmem;
    gmenubar() { pmem=nil;}
    ~gmenubar(){if (pmem!=nil) free(pmem);}
   };

mymenu onemenu;
menubar mbar;
void*  pmem,* charblock,* blackbk;
pmenunode  pmenu,item;
gmenubar gmnbar ;
cursor cur1;
int clipon=1;
int kk=0;
viewporttype tbvp={20, 20,  640, 350, clipon};
viewporttype mmvp={0, 0, 640, 20, clipon};

  boolean Havefile(string,int);
  boolean Is_file_path(string);
  void Waitkey(string,int,int );
  int   Sgn(int x1,int x2);
  void  Aarrow(int x1,int y1,int x2,int y2);
  void  Arrowdot(int x1,int y1,int x2,int y2);
  int   Max(int a,int b);
  int   Min(int a,int b);
  void  Convs(int i,char []);
  void  Getkey(int&  key,boolean& funckey);
  void  Menu(string ss);
  void Statusline(string ss);
  void Get_dos_file(string ss1,string  ss);
  boolean  Answer_yes(string ss);
  void Savequestion(string ss1,string ss,boolean&  canorno);
  void Loadquestion(string ss1,string ss,boolean&  selected);
  void Wait();
  void Cond_wait(boolean b,int k);
  void Waitanykey();
  void Cond_waitanykey(boolean b,int k);
  void Into_graph();
  void End_graph();
  void Error(string s);
  void Error_exit(string s);
  void Clear_range(int xl,int yl,int xr,int yr);

  void  Cursor_init( cursor& cur,int initx,int inity,int forecolor,int backcolor);
  void  Cursor_show(cursor& cur);
  void  Cursor_hide(cursor& cur);
  void  Cursor_setsd(cursor& cur,boolean ssdd);
  void  Cursor_done(cursor& cur);
  boolean    Cursor_isvisible(cursor& cur);
  void  Cursor_moveto(cursor& cur,int newx,int newy);
  int   Cursor_cursorx( cursor& cur);
  int   Cursor_cursory(cursor& cur);
  void  Cursor_relmove(cursor& cur,int  dx,int dy);

  boolean    Isascii(char c);
  void  Displaychinesexy(int x,int y,word s);
  void  Disp_chmodel_fromgxy(chwordmode&  cwm,int x1,int y1);
  void  Displayasciixy(int x,int y,byte s);
  void  Displaysinglexy(int& x,int& y,string  s,int& i);
  void  Displaytextxy(int x,int y,string s);
  void    Spaces(string s,int n);
  void    Substr(string s1,string s2,int si,int n);
  void    Itrim(string s1,string s2);
  void    Rtrim(string s1,string s2);
  void  Upper(string ss);
  void  Lower(string  ss);
  void  Disconnect(string ss,string path,string filename);
  boolean    Havefile(string filename,int  attr);
  void  Displaychinesexy1(int x,int y,word s);
  void  Displayasciixy1(int x,int y,byte s);
  void  Displaysinglexy1(int& x,int& y,string s,int& i);
  void  Displaytextxy1(int x,int y,string s);
   void Outtextxy(int x,int y,string s);
   void Outtext(string s);

  void  Stringobj_init(stringobj&  strobj, string news);
  void  Stringobj_done(stringobj& strobj);
  void  Stringobj_movetoword(stringobj& strobj,int& i,cursor& cur1);
  void  Stringobj_putstring(stringobj& strobj, string news);
  void  Stringobj_moveto(stringobj& strobj,int newx,int newy);
  int   Stringobj_firstx(stringobj& strobj);
  int   Stringobj_firsty(stringobj& strobj);
  string Stringobj_curstring(stringobj& strobj);
  void  Stringobj_displaystringxy(stringobj& strobj,int x,int y);
  void  Stringobj_edit(stringobj& strobj,int  newx,int newy,int lens,
   int& lastk,boolean& funckey);

  void  Gmenubar_init(gmenubar&  gmnbar,int foreclr, int width);
  void  Gmenubar_show(gwindow& gwnd,gmenubar& gmnbar);
  void  Gmenubar_hide(gwindow& gwnd, gmenubar& gmnbar);
  void  Gmenubar_moveto( gwindow& gwnd,gmenubar& gmnbar,int i,int j);
  void  Gwindow_init(gwindow& gwnd,int newx1,int newy1,int newx2,int newy2);
  void  Gwindow_done(gwindow& gwnd);
  void  Gwindow_newwindow(gwindow& gwnd);
  void  Gwindow_showstring(gwindow& gwnd,int relx,int rely,string  s);
  void  Gwindow_editstring(gwindow& gwnd,int relx,int rely, string ss);
  void  Gwindow_inputstring(gwindow& gwnd,int relx,int rely, string ss);
  void  Inputstrinwnd(int x1,int y1,int x2,string  s0,string ss);
  void  Editstrinwnd(int x1,int y1,int x2,string  s0,string ss);
  void  Dispstrinwnd(int x1,int y1,string s0);
  void  Inputintinwnd(int x1,int y1,int x2, string s0, int&  i);
  void  Editintinwnd(int x1,int y1,int x2,string s0,int& i);
  void  Inputrealinwnd(int x1,int y1,int x2,string s0,double& r);
  void  Editrealinwnd(int x1,int y1,int x2,string s0,double& r);
  void  Get_file_from_gwindow(string path,int attr,string  fname,
		  int xl,int yl,int xr,int yr,boolean& selected);

   void   Gwindow_clear(gwindow&  gwnd);
   void   Gwindow_clear_line(gwindow& gwnd,int relrow);
   void   Gwindow_clear_linemid(gwindow& gwnd, int relx,int rely,int len);

   void   Gwindow_clear_lineright(gwindow& gwnd,int relrow,int len);
   void   Gwindow_clear_LineLeft( gwindow& gwnd,int relrow,int len);
   void Get_string(string s0,string ss);
   void   Gmenubar_init(gmenubar& gmnbar,int  foreclr,int width);
   void   Gmenubar_show(gwindow& gwnd,  gmenubar& gmnbar);
   void   Gmenubar_hide(gwindow& gwnd, gmenubar& gmnbar);
   void  Gmenubar_moveto(gwindow& gwnd, gmenubar& gmnbar,int i,int j);
    int  Mymenu_numofsubmenu(mymenu& onemenu);
    pmenunode  Mymenu_firstsubmenu( mymenu& onemenu);
    pmenunode  Mymenu_getsubmenu(mymenu& onemenu,int i);
    pmenunode  Mymenu_getsubmenufrom(mymenu& onemenu,int i,pmenunode curp);
    int Mymenu_numofmenuitem(mymenu& onemenu,int i) ;
    pmenunode   Mymenu_firstmenuitem(mymenu& onemenu,int numofsub);
    void Mymenu_setsmvport( mymenu& onemenu);
    void Blackedge(viewporttype vp);
    void Selectvport(viewporttype vp);
    void Dispmenuitemxy(int x1,int y1,pmenunode p);
    void Mymenu_dispmainmenu(mymenu& onemenu);
    void Mymenu_clearmainmenu(mymenu&  onemenu);
    void Mymenu_dispsubmenu(mymenu& onemenu,int numofsub);
    void Mymenu_disp_cursubmenu(mymenu& onemenu);
    void Mymenu_disabledispsubmenu(mymenu& onemenu,int numofsub);
    void Mymenu_clear_cursubmenu(mymenu&  onemenu);
    boolean Mymenu_issubmenuitem(mymenu& onemenu);
    boolean  Mymenu_ismainmenuitem(mymenu& onemenu);
    void Mymenu_init(mymenu& onemenu,pmenunode Frstm);
    void Chck(pmenunode p);
    void Mymenu_check(mymenu&  onemenu) ;
    void Mymenu_reset_cursubmenu(mymenu&  onemenu);
    void Chck1(pmenunode p);
    void Mymenu_init2(mymenu&  onemenu);
    void Dispm( pmenunode p);
    void Mymenu_done(mymenu& onemenu);
    void Levelmove( pmenunode& p,int  dx);
    void   Menubar_movenext( mymenu& onemenu,int dx,int dy);
    void Mymenu_selectsubmenu(mymenu&  onemenu,int& lastk,
				 boolean& selectorno,boolean& aborted);
    void Mymenu_selectmenuitem(mymenu& onemenu,int&  lastk,
				    boolean&  selectorno,boolean& aborted);
    void Mymenu_selectmenu( mymenu& onemenu,pmenunode& item, boolean& selectorno);
    pmenunode   copymenu1(pmenunode panmenu);
    pmenunode  Copysubmenu1(pmenunode oldp) ;
    pmenunode   Copyitems(pmenunode oldp);
    pmenunode  Linkmenup(pmenunode pmenu1,pmenunode pmenu2);
    pmenunode   Copyandappmenup(pmenunode pmenu1,pmenunode pmenu2);
    void Copyandappmenu( mymenu menu1,mymenu menu2,mymenu& appmenu);
    void   Inputstr(string ss,int x,int y,int w,int& lastk,boolean funckey);
    void   Inputreal(float& num,int x,int y,int w,int& lastk,boolean& funckey);
    void   Inputint(int& num,int x,int y,int w,int& lastk,boolean& funckey);


  int Trunc(float m)
{int i=m;
    return i;
}
  int Round(float m)
  {int i=m;
   int k=i+1;
   float j=i+0.5;
   if(m>=j)
      return k;
    else
      return i;
      }


void  Convs(int i,char s[])
{ char st[10];
 itoa(i,st,10);
 strcpy(s,st);

 }

int Min(int a,int b)
{return ((a<b)? a:b);

}
 int Max(int a,int b)
 { return ((a<b)? b:a);
 }

   int Sgn(int x1,int x2)
    {int  x;
    int sgn;
     x=x2-x1;
      if(x<0)
	   sgn =-1;
      else if(x>0)
	      sgn=1 ;
	 else
	      sgn=0;
    return sgn;
    }


  void Getkey( int& key,boolean&  funckey)
    {int  kk;
    string ss,ss1;
	funckey=false;
	kk=getch();
	  if (kk==0)
	       { funckey=true;
		 kk=getch();
		 }
       key=kk;
      }


void Arrow(int x1,int y1,int x2,int y2)
     {int sa1,sa2,sa,sgx,sgy;
	arccoordstype    a;
	sgx=Sgn(x1,x2);
	sgy=Sgn(y1,y2);

	line(x1,y1,x2,y2);
	 if(x2==x1)
	      sa=180-sgy*90;
	 else
	       sa=270-sgx*90-sgx*sgy*Round(atan(abs((y2-y1)/(x2-x1)))*180/PI);

	  sa1=(sa-15)%360;     sa2=(sa+15)%360;

	  arc(x2,y2,sa1,sa2,7);     getarccoords(&a);
	  line(a.xstart,a.ystart,x2,y2);
	  line(a.xend,a.yend,x2,y2);
	  }


void  Arrowdot(int x1,int y1,int x2,int y2)
     { circle(x1,y1,1);
       Arrow(x1,y1,x2,y2);
       }





  void  Get_chmodel(word s,chwordmode cwm)
     {unsigned int  dd,ff;
      unsigned long int	 rec=0;

	FILE *f;

	if( (f=fopen("hzk16","rb") )==NULL)
	  {cout<<"can't open"<<endl;
	   exit(0);
	   }

	dd=s/256;
	ff=s%256;
	rec=( (dd-0xa1)*94+(ff-0xa1) );
	rec=rec*32;

	fseek(f,rec,0);
	fread(cwm,32,1,f);
	fclose(f);
      }



  boolean  Isascii( unsigned char c)
   {  boolean isasc=(boolean)isascii(int(c));

      return isasc; }

void Textxy_gxy(int x,int y,int& x1,int&  y1)
       {   x1=(x-1)*8;
	   y1=(y-1)*20+3;
	   if(charblock==nil)
	      {
	       int size=imagesize(1,30,8,39);
	       charblock=malloc(size);
	       //setfillpattern(fillmode,RED);
	       bar(1,30,8,39);
	       getimage(1,30,8,39,charblock);
	       putimage(1,30,charblock,1);
	       }

       }

void Clear_byte_disp(int x,int y)
   {int x1,y1;
	Textxy_gxy(x,y, x1,y1);



	 putimage(x1,y1,charblock,0);
	 putimage(x1,y1,charblock,1);

       }


    void  Get_chmodel_fromxhzk(word s, chwordmode cwm)
    {int low,mid,hh,s1;
     pointer p;
     boolean suc;

	     low=0;
	     hh=xhzk.sortednum-1;
	     suc=false;
	      while ( (low<=hh) &&(!suc) )
		 { mid=(low+hh)/2;
		       s1=s-xhzkarr[mid].code;
		       if (s1==0)
			     suc=true;
		       else if (s1<0)
			      hh=mid-1;
			     else
				 low=mid+1;
		  }
	      if  (suc)
		      { for(int i=0;i<16;i++)
			   cwm[i]=xhzkarr[mid].cwm[i];


			}

	      else
			 Get_chmodel(s, cwm);
      }


   word swap(word w)
   {word x,y;
    word m=255;
    x=w&m;
    x=x<<8;
    y=w>>8;
  word  w1=x+y;
  return w1;
    }

    void  Disp_chmodel_fromgxy(chwordmode cwm,int  x1,int y1)
      {int i,j;
       word w;
	  for (i=0;i<16;i++)
		 {
		   w=cwm[i];
		    w=swap(w);
		    for (j=0;j<=15;j++)
		      {  if (  (w & 0x8000)!=0 )
			      putpixel(x1+j,y1+i,getcolor() );
			    w=w<<1;

		       }
		  }
       }
     void    Disp_chinese_at(word s,int x,int y)
      {int x1,y1;
       chwordmode cwm;
	Get_chmodel_fromxhzk(s,cwm);
	Textxy_gxy(x,y, x1,y1);
	//y1=y1+3;
	Disp_chmodel_fromgxy(cwm,x1,y1);
	}

void    Displaychinesexy(int x,int y, word s)
       {  Clear_byte_disp(x,y);
	  Clear_byte_disp(x+1,y);
	  Disp_chinese_at(s,x,y);
       }




 void  Displayasciixy(int x,int y,byte s)
      {int  x1,y1;
	Textxy_gxy(x,y, x1,y1);
	Clear_byte_disp(x,y);

      unsigned	char s1=s;
      unsigned	char s2[1];
	s2[0]=s1;
	s2[1]='\0';
	outtextxy(x1,y1+7,s2);


      }



   void  Displaysinglexy(int& x,int& y,string s,int& i)
     {
	if (!Isascii(s[i]))

	     {  word j=s[i]*256+s[i+1];
		//cout<<j<<endl;
		Displaychinesexy(x,y,j);
		i=i+2;
		x=x+2;
	      }
	else

	 {  Displayasciixy(x,y,s[i]);
	 i=i+1;
	 x=x+1;
	 }
     }
   void  Displaytextxy(int x,int y,string s)
     {   int  x1,y1,i;
	 i=0; x1=x; y1=y;
	  int j=strlen(s);
	  while (i<j )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -