作者dragondoll (龙娃娃)
看板mud_sanc
标题Re: [wizs] 巫师升等测验题目二
时间Thu Nov 20 20:11:16 2008
都最後一天了看起来应没其他人要写我就直接发了。
程式位置: /u/d/dragondoll/question/q2.c
程式行数: 算这干嘛?
执行结果: 略
这题大概花了我看两节生理共笔的时间完成。
有些地方写的有点不满意,不过我也不想多花时间改了。
另,原则上不多做题目要求以外的容错判定。
inherit ROOM;
void create()
{
::create();
seteuid(getuid());
set("light",1);
set("short","Test2");
set("long",@PLAIN
PLAIN
);
}
void init()
{
add_action("test41","test2");
}
mixed show_rearrange(mixed fa2)
{
int i,j;
string msg=""; for(i=0;i<sizeof(fa2);i++)
{
for(j=0;j<sizeof(fa2[i]);j++)
{
if(j==4)
{
if(fa2[i][j]==" 爆!"){ msg = msg + HIR + fa2[i][j]+NOR;
fa2[i][j]= HIR + fa2[i][j]+NOR;} else if(fa2[i][j]==" HOT"){
msg = msg + HIW + fa2[i][j]+NOR; fa2[i][j]= HIW + fa2[i][j]+NOR;}
else msg = msg + fa2[i][j];
}
else msg = msg + fa2[i][j];
}
msg = msg + "\n";
}
write(msg);
return fa2;
}
int test41(string str)
{
string file,ss,msg;
int i; mixed fa,fa2;
file = read_file("/d/test2.txt");
fa = explode(file,"\n");
fa2=allocate(sizeof(fa));
msg = ""; for(i=0;i<sizeof(fa);i++)
{
ss = fa[i];
fa2[i]=allocate(6);
fa2[i][0] = ss[0..9];
fa2[i][2] = ss[10..22];
fa2[i][1] = ss[23..27];
fa2[i][3] = ss[28..61];
fa2[i][4] = ss[62..66];
fa2[i][5] = ss[67..strlen(fa[i])-1]; //在这里只要改变数字的顺序就可以变
换显示了, 此处仅变换2, 3项
}
fa2 = show_rearrange(fa2);
fa2 = sort_array(fa2,"ig1",this_object());
write("依人气排序显示:\n");
show_rearrange(fa2);
fa2 = sort_array(fa2,"ig2",this_object());
write("依类别排序显示:\n");
show_rearrange(fa2);
fa2 = sort_array(fa2,"ig3",this_object());
write("依板名排序显示:\n");
show_rearrange(fa2);
return 1;
}
int ig1(mixed a,mixed b)
{
int ax,bx;
if(a[4]==HIR+" 爆!"+NOR)ax = 999;
else if(a[4]==HIW+" HOT"+NOR)ax = 101;
else ax=atoi(a[4]);
if(b[4]==HIR+" 爆!"+NOR) bx = 999;
else if(b[4]==HIW+" HOT"+NOR) bx = 101;
else bx = atoi(b[4]);
if(ax>bx)return 1;
else if(ax<bx)return -1;
else return 0;
}
int ig2(mixed a,mixed b)
{
if(a[1]=="类别 ")return -1;
else if(b[1]=="类别 ")return 1;
if(a[1]>b[1])return 1;
else if(a[1]<b[1])return -1;
else return 0;
}
int ig3(mixed a,mixed b)
{
string ax,bx;
if(a[2]=="看 板 ")return -1;
else if(b[2]=="看 板 ")return 1;
ax = capitalize(a[2]);
bx = capitalize(b[2]);
if(ax>bx)return 1;
else if(ax<bx)return -1;
else return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.194.152.155