📄 grary1.h
字号:
coordtwo(ag,j,hl,x3,y3,x4,y4);
coord(ag,i,x1,y1);
dh=elmnhigh(ag)/4;
dw=elmnwidth(ag)/4;
if (Hor_Vert(ag)==horizon )
if (x1<x3)
{ dec(x3,dw); dec(x4,dw); }
else
{ inc(x3,dw); inc(x4,dw); }
else
if (y1<y3)
{ dec(y3,dh); dec(y4,dh); }
else
{ inc(y3,dh); inc(y4,dh); };
x1=x1+ag.w/2;
y1=y1+ag.h/2;
Arrow(x1,y1,x2,y2);
line(x2,y2,x4,y4);
Arrow(x4,y4,x3,y3);
}
void initial_Arr1( GrpArr& ag)
{int may;
Into_graph();
setcolor(WHITE);// DIRECTVIDEO:=FALSE;
setfillpattern(fillmode,fillcolor);
if( ag.havefd==true)
farfree(ag.datafild[ag.fdsub]);
ag.havefd=true;
ag.fdsub=ag.ho_lev;
bar(1,1,ag.w-2,ag.h-2);
ag.size=imagesize(1,1,ag.w-2,ag.h-2);
ag.datafild[ag.ho_lev]=farmalloc(ag.size);
getimage(1,1,ag.w-2,ag.h-2,ag.datafild[ag.ho_lev]);
putimage(1,1,ag.datafild[ag.ho_lev],1);
ag.dx=ag.ho_lev*ag.w;
ag.dy=(1-ag.ho_lev)*ag.h;
}
void initial_Arr2( GrpArr& ag)
{
initial_Arr1(ag);
window(1,1,80,3);
textcolor(WHITE);
ag.sx=25*(1+ag.decinc)+( (getmaxx()-200)*ag.ho_lev+ 50 )/2*(1-ag.decinc);
ag.sy=25*(1+ag.decinc)+( (getmaxy()-150)*(1-ag.ho_lev)+50)/2*(1-ag.decinc) ;
}
void initial_GrpArr( GrpArr& ag)
{ initial_Arr2(ag) ; }
int sx1( GrpArr& ag)
{ int sx1=ag.sx;
return sx1; }
int sy1( GrpArr& ag)
{int sy1=ag.sy;return sy1; }
int elmnhigh( GrpArr& ag)
{ int elmnhigh=ag.h;return elmnhigh; }
int elmnwidth( GrpArr& ag)
{ int elmnwidth=ag.w;return elmnwidth; }
void setelmnsize( GrpArr& ag,int hh,int ww)
{
ag.h=hh; ag.w=ww;
}
int sub1( GrpArr& ag)
{ int sub1=ag.sub1;return sub1; }
int sub2( GrpArr& ag)
{ int sub2=ag.sub1+ag.count-1;return sub2;}
HorOrLev Hor_Lev( GrpArr& ag)
{ HorOrLev Hor_Lev=ag.ho_lev;return Hor_Lev; }
HorOrLev Hor_Vert( GrpArr& ag)
{ HorOrLev Hor_Vert=ag.ho_lev;return Hor_Vert; }
d_or_i SubDecOrInc( GrpArr& ag)
{ d_or_i SubDecOrInc=ag.decinc;return SubDecOrInc; }
boolean DispSub( GrpArr& ag)
{ boolean DispSub=ag.dsb;return DispSub; }
void set_GrpArr_to( GrpArr& ag,int x,int y)
{
ag.sx=x; ag.sy=y;
}
void cur_onoff( GrpArr& ag,int i)
{ cur_cover(ag,i,1); }
void cur_cover( GrpArr& ag,int i,int orxor)
{ fifild(ag,i,orxor); }
void cur_elmn_onoff( GrpArr& ag,int i)
{ cur_cover(ag,i,1); }
void display_GrpArr_frame( GrpArr& ag)
{int x0,y0,x1,y1,x2,y2,x,y,xm,ym;
GrpArr_range(ag,x1,y1,x2,y2);
setfillstyle(1,0);
bar(x1,y1,x2,y2);
if (ag.dsb)
dissub(ag);
coord(ag,ag.count+(ag.decinc+1)/2+ag.sub1-1,xm,ym);
coord(ag,(ag.decinc+1)/2+ag.sub1-1,x,y);
if (ag.decinc==1 )
rectangle(x,y,xm+ag.w*(1-ag.ho_lev),ym+ag.h*ag.ho_lev);
else
rectangle(xm,ym,x+ag.w*(1-ag.ho_lev),y+ag.h*ag.ho_lev);
for (int i=ag.sub1 ;i<=ag.count+ag.sub1-1;i++)
{ coord(ag,i,x,y);
line(x,y,x+ag.w*(1-ag.ho_lev),y+ag.h*ag.ho_lev);
}
coord(ag,ag.sub1-1,x0,y0);
if(ag.decinc==1)
outtextxy(x0,y0+ag.h/2,ag.name);
else
outtextxy(x0,y0+ag.h/6,ag.name);
}
void display_GrpArr_elmns( GrpArr& ag)
{
for(int i=ag.sub1;i<=ag.count+ag.sub1-1;i++)
disnodedat(ag,i);
}
void display_GrpArr( GrpArr& ag)
{
display_GrpArr_frame(ag);
display_GrpArr_elmns(ag);
Hide_All_arrptr(ag);
}
void display_Arr( GrpArr& ag)
{ display_GrpArr(ag); }
void move_GrpArr_to( GrpArr& ag,int x,int y)
{ ag.sx=x;
ag.sy=y;
display_GrpArr(ag); }
void move_GrpArr_dxy( GrpArr& ag,int x,int y)
{ ag.sx=ag.sx+x;
ag.sy=ag.sy+y;
display_GrpArr(ag); }
void move_GrpArr_mid( GrpArr& ag,int x0,int y0)
{int dx,dy,x01,x02,y01,y02;
GrpArr_range(ag,x01,y01,x02,y02);
dx=x0-(x01+x02)/2;
dy=y0-(y01+y02)/2;
move_GrpArr_dxy(ag,dx,dy);
}
void reset_GrpArr_elmn( GrpArr& ag,int i)
{
*grp_elmn_ptr(ag,i)=0;
disnodedat(ag,i);
}
void reset_GrpArr( GrpArr& ag)
{int i;
{ for( i=ag.sub1;i<=ag.count+ag.sub1-1;i++)
reset_GrpArr_elmn(ag,i);
display_GrpArr_frame(ag);
} }
void clear_GrpArr_elmn( GrpArr& ag ,int i)
{
*grp_elmn_ptr(ag,i)=0;
fifild(ag,i,0);
fifild(ag,i,1);
}
void clear_GrpArr( GrpArr& ag)
{int i;
for( i=ag.sub1;i<=ag.count+ag.sub1-1;i++)
*grp_elmn_ptr(ag,i)=0;
}
void reset_Arrbb( bb1& b,int i1,int i2)
{ int i;
for( i=i1;i<=i2 ;i++)
b[i]=0;
}
#if !defined(__GRAPH2_H)
void load_Arraa_file( aa& a,int n, string dosfile)
{ FILE * ff;
int i,j;
if((ff=fopen(dosfile,"r"))==NULL)
{
cout<<"file"<<dosfile<<"can't open!"<<endl;
exit(0);
}
i=1;
while ((fscanf(ff,"%4d",&a[i])!=EOF)&&(i<n) )
i=i+1 ;
for( j=i;j<n;j++)
a[j]=0;
fclose(ff);
}
void load_Arrbb_file( bb1& b,int sn,int en, string dosfile)
{ FILE * ff;
int i,j;
if((ff=fopen(dosfile,"r"))==NULL)
{
cout<<"file"<<dosfile<<"can't open!"<<endl;
exit(0);
}
i=sn;
while ((fscanf(ff,"%4d",&b[i])!=EOF)&&(i<en) )
i=i+1 ;
for( j=i;j<en;j++)
b[j]=0;
fclose(ff);
}
void load_Arraa( aa& a,int n)
{unsigned char ss[60]="grary1\\*.arr";
boolean selected;
char drive[3];
char dir[25];
char file[20];
char ext[8];
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_Arraa_file(a,n,ss);
}
}
void load_Arrbb( bb1& b,int sn,int en)
{
char drive[3];
char dir[25];
char file[20];
char ext[8];
unsigned char ss[60]="grary1\\*.arr";;
boolean selected;
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_Arrbb_file(b,sn,en,ss);
}
}
void save_Arraa_file( aa& a,int n,string dosfile)
{FILE * ff;
int i;
if((ff=fopen(dosfile,"w"))==NULL)
{
cout<<"file "<<dosfile<<" can't write!"<<endl;
exit(0);
}
i=1;
for (i=1;i<=n;i++)
fprintf(ff,"%4d",a[i]);
fclose(ff);
}
void save_Arrbb_file( bb1& b,int sn,int en,string dosfile)
{FILE *ff;
int i;
if((ff=fopen(dosfile,"w"))==NULL)
{
cout<<"file "<<dosfile<<"can't write!"<<endl;
exit(0);
}
i=1;
for( i=sn;i<=en;i++)
fprintf(ff,"%4d",b[i]);
fclose(ff);
}
void save_Arraa( aa& a,int n)
{boolean CanOrNo;
unsigned char ss[60]="grary1\\*.arr";
Savequestion("存储文件到",ss,CanOrNo);
if (CanOrNo)
save_Arraa_file(a,n,ss);
}
void save_Arrbb( bb1& b,int sn,int en)
{unsigned char ss[60]="grary1\\*.arr";
boolean CanOrNo;
Savequestion("存储文件到",ss,CanOrNo);
if (CanOrNo)
save_Arrbb_file(b,sn,en,ss);
}
void disp_Arraa( aa& a,int n)
{GrpArr ag;
bb1 b;
int i;
for( i=1;i<=n;i++)
b[i]=a[i] ;
create_grp_Arrbb(ag,(HorOrLev)1,(d_or_i)1,true,b,"AA",1,n);
initial_GrpArr(ag);
move_GrpArr_to(ag,sx1(ag),getmaxy()/2);
getch();
window(1,1,80,4);
}
void disp_Arrbb( bb1& b,int sn,int en)
{ GrpArr ag;
create_grp_Arrbb(ag,(HorOrLev)1,(d_or_i)1,true,b,"BB",sn,en);
initial_Arr2(ag);
move_GrpArr_to(ag,sx1(ag),getmaxy()/2);
getch();
window(1,1,80,4);
}
void modi_GrpArr(GrpArr& ag)
{
int ecol,ci,cj;
long num;
char * endptr;
boolean f;
datatype x=0;
int k;
window(1,1,80,2);
display_GrpArr(ag);
Menu("Arrow for move, space bar for input, ctrlw for exit");
cj=ag.sub1;
ecol=ag.sub1+ag.count-1;
cur_cover(ag,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;
* grp_elmn_ptr(ag,cj) =x;
disnodedat(ag,cj);
cur_cover(ag,cj,1);
}
else
if (k!=ctrlw)
{
cur_cover(ag,cj,1);
switch(k)
{
case up,left: if (cj==ag.sub1)
cj=ecol;
else
cj=cj-1;
break;
case down,right:if (cj==ecol)
cj=ag.sub1;
else
cj=cj+1;
break;
}
cur_cover(ag,cj,1);
}
}
while(k!=ctrlw);
}
void input_GrpArr(GrpArr& ag)
{ clear_GrpArr(ag);
modi_GrpArr(ag);
}
void rand_GrpArr(GrpArr& ag,int range1,int range2)
{int i,v ;
if(range1==range2)
for( i=ag.sub1;i<=ag.sub1+ag.count-1;i++)
*grp_elmn_ptr(ag,i)=range1;
else
{
if( range1>range2 )
{i=range1;range1=range2;range2=i; }
for( i=ag.sub1;i<=ag.sub1+ag.count-1;i++)
{ do
v=random(range2);
while( v<range1);
*grp_elmn_ptr(ag,i)=v;
}
}
display_GrpArr(ag);
modi_GrpArr(ag);
}
void load_GrpArr_file(GrpArr& ag,string dosfile)
{FILE * ff;
int i,j;
if((ff=fopen(dosfile,"r"))==NULL)
{
cout<<"file"<<dosfile<<"can't open!"<<endl;
exit(0);
}
i=ag.sub1;
j=0;
while ( fscanf(ff,"%5d", grp_elmn_ptr(ag,i) )!=EOF && (j<ag.count) )
{ i++;
j++;
}
if(i<ag.sub1+ag.count-1)
for (j=i;j<=ag.sub1+ag.count-1;j++)
*grp_elmn_ptr(ag,j) =0;
fclose(ff);
}
void load_GrpArr(GrpArr& ag)
{
char drive[3];
char dir[25];
char file[20];
char ext[8];
unsigned char ss[60]="grary1\\*.arr";
boolean selected;
unsigned char ss1[60]="从文件读数组, 文件名:";
Loadquestion(ss1,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_GrpArr_file(ag,ss);
}
}
void save_GrpArr_file(GrpArr& ag,string dosfile)
{FILE* ff;
int a;
int i;
if((ff=fopen(dosfile,"w"))==NULL)
{
cout<<"file "<<dosfile<<" can't write!"<<endl;
exit(0);
}
i=1;
for (i=ag.sub1;i<=ag.sub1+ag.count-1;i++)
{
a=*grp_elmn_ptr(ag,i);
fprintf(ff,"%5d",a );
}
fclose(ff);
}
void save_GrpArr(GrpArr& ag)
{ unsigned char ss[50]="grary1\\*.arr";
boolean CanOrNo;
Savequestion("存储文件到",ss,CanOrNo);
if( CanOrNo )
save_GrpArr_file(ag,ss);
}
void input_Arrbb(bb1& b,int i1,int i2)
{ GrpArr ag;
create_grp_Arrbb(ag,(HorOrLev)1,(d_or_i)1,true,b,"b",i1,i2);
initial_Arr2(ag);
move_GrpArr_to(ag,sx1(ag),getmaxy()/2);
input_GrpArr(ag);
disp_Arrbb(b,i1,i2);
}
void modi_Arrbb(bb1& b,int i1,int i2)
{GrpArr ag;
create_grp_Arrbb(ag,(HorOrLev)1,(d_or_i)1,true,b,"b",i1,i2);
initial_Arr2(ag);
move_GrpArr_to(ag,sx1(ag),getmaxy()/2);
modi_GrpArr(ag);
disp_Arrbb(b,i1,i2);
}
void rand_Arrbb( bb1& b,int i1,int i2,int range1,int range2)
{ GrpArr ag;
int i;
if(range1==range2)
for (i=i1;i<=i2;i++)
b[i]=range1;
else
{
if (range1>range2 )
{i=range1;range1=range2;range2=i; }
for (i=i1;i<=i2;i++)
do b[i]=rand();
while (b[i]<range1||b[i]>range2);
}
create_grp_Arrbb(ag,(HorOrLev)0 ,(d_or_i)1,true,b,"Rand",i1,i2);
initial_Arr2(ag);
move_GrpArr_to(ag,sx1(ag),getmaxy()%2);
modi_GrpArr(ag);
disp_Arrbb(b,i1,i2);
}
// {===AnyArray===}
void reset_AnyArr(bb1& b,int i01,int i02,int i1,int i2)
{int i;
if(i1<i01||i2>i02)
return;
for (i=i1;i<=i2;i++)
b[i]=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -