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

📄 grary2.h

📁 该包是数据结构的实验软件,来源于合肥工业大学人工智能与数据挖掘实验室,用来实现数据结构.
💻 H
📖 第 1 页 / 共 3 页
字号:
     getch();
      }
  void reset_GrpArr2(GrpArr2& ag)
    {int i,j;

	    for (i=ag.srow;i<=ag.erow;i++)
	       for (j=ag.scol;j<=ag.ecol;j++)
		  put_elmn2(ag,i,j,0);
      }
  void clear_GrpArr2_elmn2(GrpArr2& ag,int i,int j)
     { fifild2(ag,i,j,0);fifild2(ag,i,j,1);  }
  void clear_GrpArr2(GrpArr2& ag)
     {int i,j;

	 for (i=ag.srow;i<=ag.erow;i++)
	   for( j=ag.scol;j<=ag.ecol;j++)
	     clear_GrpArr2_elmn2(ag,i,j);
	     getch();

      }

    void GrpArr2_range(GrpArr2& ag,int& x1,int& y1,int& x2,int& y2)
    {
	   {  coord2(ag,ag.srow-1,ag.scol-1,x1,y1);
		  coord2(ag,ag.erow+2,ag.ecol+2,x2,y2);
    }    }

   void clear_GrpArr2_range(GrpArr2& ag)
   {int  x1,y1,x2,y2;
      GrpArr2_range(ag, x1,y1,x2,y2);
      Clear_range( x1,y1,x2,y2) ;
      }
  void display_GrpArr2_frame(GrpArr2& ag)
     {int x1,y1,x2,y2,i,j;

	  {  dissub2(ag);
	       coord2(ag,ag.srow,ag.scol,x1,y1);
	       coord2(ag,ag.erow+1,ag.ecol+1,x2,y2);
	       outtextxy((x1+x2)/2,y2+ag.h/2,ag.name);
	       rectangle(x1,y1,x2,y2);
	       for (i=ag.scol+1;i<=ag.ecol;i++)
		 { coord2(ag,ag.srow,i,x1,y1);
		   coord2(ag,ag.erow+1,i,x2,y2);
		       line(x1,y1,x2,y2);
		 }
	       for( i=ag.srow+1;i<=ag.erow;i++)
		  { coord2(ag,i,ag.scol,x1,y1);
		    coord2(ag,i,ag.ecol+1,x2,y2);
			line(x1,y1,x2,y2);
		  }
       }
       }
  void display_GrpArr2_elmn2(GrpArr2& ag,int i,int j)
     {  disnodedat2(ag,i,j); }
  void display_GrpArr2_elmns(GrpArr2& ag)
    {int  i,j;

	       for( i=ag.srow;i<=ag.erow;i++)
		      for (j=ag.scol;j<=ag.ecol;j++)
			 disnodedat2(ag,i,j);
      }
  void display_GrpArr2_sub2(GrpArr2& ag)
     { dissub2(ag); }
  void display_GrpArr2(GrpArr2& ag)
     {  clear_GrpArr2_range(ag);
       display_GrpArr2_frame(ag);
       display_GrpArr2_elmns(ag);

     }
  void move_GrpArr2_to(GrpArr2& ag,int x,int y)
     {  ag.sx=x;ag.sy=y;   display_GrpArr2(ag) ;  }
  void move_GrpArr2_dxy(GrpArr2& ag,int x,int y)
     {  ag.sx=x+ag.sx;ag.sy=y+ag.sy;
      display_GrpArr2(ag);  }
  void move_GrpArr2_mid(GrpArr2& ag,int x,int y)
     {int x1,y1,x2,y2;

	     coord2(ag,ag.srow,ag.scol,x1,y1);
	      coord2(ag,ag.erow+1,ag.ecol+1,x2,y2);
	     move_GrpArr2_dxy(ag,x-(x1+x2)/2,y-(y1+y2)/2);
      }

  void load_arrbb2_file(BB2& a,int i1,int i2,int j1,int j2,string dosfile)
    {FILE * ff;
      int i,j,k;
     if((ff=fopen(dosfile,"r"))==NULL)
	{
	cout<<"file"<<dosfile<<"can't open!"<<endl;
	exit(0);
	}
	  for( i=i1;i<=i2;i++)
	     for (j=j1; j<=j2;j++)
	     a[i][j]=0;
	     i=i1-1;
	   while (i<i2)
	     { j=j1;i=i+1;
	       while ((j<=j2)&&(fscanf(ff,"%4d",&a[i][j])!=EOF))
		j=j+1;
	      }

	      fclose(ff);
       }

  void rand_arrbb2(BB2& a,int i1,int i2,int j1,int j2,int range1,int range2)
     { int i,j,k;
      if (range1>range2 )
		 {k=range1;range1=range2;range2=k; }
	   for (i=i1;i<=i2;i++)
	    for(j=j1;j<=j2;j++)
	     do a[i][j]=rand();
	      while (a[i][j]<range1||a[i][j]>range2);

	    modi_arrbb2(a,i1,i2,j1,j2);
      }

void load_arrbb2(BB2& a,int i1,int i2,int j1,int j2)
     {
      char drive[3];
      char dir[25];
      char file[20];
      char ext[8];

      boolean selected;
     unsigned char ss[60]="grary2\\*.arr";
     Loadquestion("从文件读数组, 文件名:",ss,selected);

     if (selected)
	 {
	    _splitpath(ss,drive,dir,file,ext);
	    boolean  bool=(boolean)strcmpi(ext,".arr");
	   if(bool!=0)
		{
		  Error("the file can't be loaded");
		  exit(0);
		}
	    else

		 load_arrbb2_file(a,i1,i2,j1,j2,ss) ;
	  }
      }
  void save_arrbb2_file(BB2& a,int i1,int i2,int j1,int j2,string dosfile)
   {
	FILE * ff;
	int i,j;
	if((ff=fopen(dosfile,"w"))==NULL)
	 {
	  cout<<"file "<<dosfile<<" can't write!"<<endl;
	   exit(0);
	   }
       for (i=i1;i<=i2;i++)
	  for (j=j1;j<=j2;j++)
	      fprintf(ff,"%4d" ,a[i][j]);
	      fclose(ff);
     }



  void save_arrbb2(BB2& a,int i1,int i2,int j1,int j2)
   { boolean canorno;
    unsigned char ss[60]="grary2\\*.arr";
    Savequestion("存储文件到: ",ss,canorno);

    if (canorno)
	 save_arrbb2_file(a,i1,i2,j1,j2,ss);
     }
  void disp_arrbb2(BB2& b,int i1,int i2,int j1,int j2)
    {GrpArr2 ag;
       create_grp_arrbb2(ag,b,"arrbb2",i1,i2,j1,j2);
	initial_GrpArr2(ag);
	display_GrpArr2(ag);
	getch();

     }

  void modi_GrpArr2(GrpArr2& ag)
     {int ci=0,cj=0;

      long num=0;
      char * endptr=nil;
      boolean f;
      datatype x=0;
      int k;

      window(1,1,80,2);

      Menu("arrow for move,  space bar for input,   ctrlw for exit");
      ci=ag.srow;
      cj=ag.scol;

      cur_cover2(ag,ci,cj,1);

     do
     {
      Getkey(k,f);
	   if ( !(k==up||k==down||k==left||k==right||k==32||k==ctrlw ) )
		  cout<<'\007'<<endl;

	    else  if (k==32)
		      {
			 char s[20];
			   do
			    { clrscr();
			      strcpy(s,"");
			      cin>>s;
			      num=strtol(s,&endptr,10);
			      if(*endptr=='\0'&&(num<-32768||num>32767) )
				  {
				     Error("over flow,input again!");
				     }
			       else if(*endptr!='\0')
				    Error("format of data error,input again!");
			      }

			   while(!( *endptr=='\0'&&num>=-32768&&num<=32767 ) );

			    x=num;
			    put_elmn2(ag,ci,cj,x);
			    cur_cover2(ag,ci,cj,1);
			  }

		 else if (k!=ctrlw)
		       {
			  cur_cover2(ag,ci,cj,1);
			  switch(k)
			  {
			  case     up:  if (ci==ag.srow)
					     cout<<'\007'<<endl;
					else
					    ci--;
					 break;

			   case   down:  if (ci==ag.erow)
					      cout<<'\007'<<endl;
					 else
					     ci=ci+1;
					 break;
			   case    left:   if (cj==ag.scol)
						  cout<<'\007'<<endl;
					  else
					       cj=cj-1;
					  break;
			    case    right:  if (cj==ag.ecol)
						cout<<'\007'<<endl;
					     else
						 cj=cj+1;
					     break;
			  }

			  cur_cover2(ag,ci,cj,1);

		  }
	}
	    while(k!=ctrlw);
	    cur_cover2(ag,ci,cj,1);
	    Menu("Modifying Finish");
       }
  void input_GrpArr2(GrpArr2& ag)
     {  reset_GrpArr2(ag);
	display_GrpArr2(ag);
	modi_GrpArr2(ag);
	}
  void  rand_GrpArr2(GrpArr2& ag,int range1,int range2)
     {int  i=0,j=0,v=0;
	if (range1>range2)
		{ i=range1;
		   range1=range2;
		   range2=i;
		   }
	   for (i=ag.srow;i<=ag.erow;i++)
	     for(j=ag.scol;j<=ag.ecol;j++)
	     {  do
		    v=rand();

	       while (v<range1||v>range2);

	       *grp_elmn2_ptr(ag,i,j)=v;
	      }
	   display_GrpArr2(ag);
	   modi_GrpArr2(ag);
      }
  void modi_arrbb2(BB2& b,int i1,int i2,int j1,int j2)
    {
     GrpArr2 ag;
	  create_grp_arrbb2(ag,b,"Modi arrbb2",i1,i2,j1,j2);
	  initial_GrpArr2(ag);
	  display_GrpArr2(ag);
	  modi_GrpArr2(ag);
     }
  void input_arrbb2(BB2& b ,int i1,int i2,int j1,int j2)
   {
    GrpArr2 ag;
     create_grp_arrbb2(ag,b,"Inpuut arrbb2",i1,i2,j1,j2);
     initial_GrpArr2(ag);
     display_GrpArr2(ag);
     reset_GrpArr2(ag);
     clear_GrpArr2(ag);
     modi_GrpArr2(ag);
      }
  void  reset_arrbb2(BB2& b,int i1,int i2,int j1,int j2)
     {int  i,j;
      for (i=i1;i<=i2;i++)
	 for (j=j1;j<=j2;j++)
		b[i][j]=0;
     }





//{===AnyArray===}
 // AnyArr2
  void create_grp_AnyArr2(GrpArr2& ag,BB2&  b ,string  title,
			 int i01,int i02,int j01,int j02,int i1,int i2 ,int j1,int j2)
    {int  i,j;
    word sss,ooo;
      ag.h=16;
      ag.w=30;
      ag.name=title;
      ag.ag2=&b[b.rowstart][b.colstart];
      ag.havefd=false;
      ag.srow=i1;
      ag.erow=i2;
      ag.scol=j1;
      ag.ecol=j2;

      ag.arow1=i01;
      ag.acol1=j01;
      ag.arow2=i02;
      ag.acol2=j02;
      }

  void reset_AnyArr2(BB2& b,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2)
     {
     int  i,j;
	 for (i=i1;i<=i2;i++)
	    for (j=j1;j<=j2;j++)
	      b[i][j]=0;

     }

  void reset_AnyArr2All(BB2& b,int i01,int i02,int j01,int j02)
     { reset_AnyArr2(b,i01,i02,j01,j02,i01,i02,j01,j02);
     }
  void load_AnyArr2_file(BB2& a ,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2,string dosfile)
    {
    FILE * ff;
    int i,j,n,rown;
    pointer p;
     if((ff=fopen(dosfile,"r"))==NULL)
	   {
	   cout<<"file "<< dosfile<<"can't open!"<<endl;
	   exit(0);
	   }

      for (i=i1 ;i<=i2;i++)
	     for (j=j1;j1<=j2;j++)
		a[i][j]=0;


	   i=i1-1;
	   while (i<i2)
	     { j=j1;
	       i=i+1;
	      while ((j<=j2)&&(fscanf(ff,"%5d",&a[i][j])!=EOF))
		j=j+1;
	     }

       fclose(ff);
     }

  void load_AnyArr2(BB2& a,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2)
      {char drive[3];
       char dir[25];
       char file[20];
       char ext[8];
      boolean selected;
       unsigned char ss[60]="grary2\\*.arr";
       Loadquestion("从文件读数组, 文件名",ss,selected);
       if (selected)

	 {
	    _splitpath(ss,drive,dir,file,ext);
	    boolean  bool=(boolean)strcmpi(ext,".arr");
	   if(bool!=0)
		{
		  Error("the file can't be loaded");
		  exit(0);
		}
	    else

		 load_AnyArr2_file(a,i01,i02,j01,j02,i1,i2,j1,j2,ss);
       }
    }
  void save_AnyArr2_file(BB2&  a,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2,string dosfile)
     {
     FILE *ff;
     int i,j;
      if((ff=fopen(dosfile,"w"))==NULL)
	   {
	   cout<<"file "<< dosfile<<"can't open!"<<endl;
	   exit(0);
	   }

       for (i=i1;i<=i2;i++)
	  for (j=j1;j<=j2;j++)
	      fprintf(ff,"%4d" ,a[i][j]);


	  fclose(ff);
     }
  void save_AnyArr2(BB2& a,int  i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2)
     { boolean canorno;
       unsigned char  ss[60]="grary2\\*.arr";
       Savequestion("存储文件到: ",ss,canorno);
       if (canorno)
	    save_AnyArr2_file(a,i01,i02,j01,j02,i1,i2,j1,j2,ss);
       }

  void disp_AnyArr2(BB2& a,int  i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2)
    { GrpArr2 ag;
      int i;
	create_grp_AnyArr2(ag,a,"AA",i01,i02,j01,j02,i1,i2,j1,j2);
	initial_GrpArr2(ag);
	move_GrpArr2_to(ag,sx2(ag),getmaxy()/2);
	window(1,1,80,3);
	getch();
     }
  void input_AnyArr2(BB2&  b,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2)
     {GrpArr2 ag;
	create_grp_AnyArr2(ag,b,"AnyArr",i01,i02,j01,j02,i1,i2,j1,j2);
	   initial_GrpArr2(ag);
	   move_GrpArr2_to(ag,sx2(ag),getmaxy()/2);
	   input_GrpArr2(ag);
	   disp_AnyArr2(b,i01,i02,j01,j02,i1,i2,j1,j2);
      }

  void modi_AnyArr2(BB2& b,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2)
     { GrpArr2 ag;

⌨️ 快捷键说明

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