求助
pascal吧
全部回复
仅看楼主
level 11
圣梦星辉 楼主
关于字符串
2014年12月26日 14点12分 1
level 11
圣梦星辉 楼主
考试排名
【问题描述】
信息学竞赛获得一等奖的中学生将可以获得保送资格或高考照顾20分的政策。但由于一流高校保送生生源较多,所以需要通过选拔考试的形式来录取保送生,输入某重点高校保送生考试的三科考试成绩,计算出每个学生的总分,并按总分从高到低排名并输出。
【输入格式】
输入文件名为test.in
第一行一个整数n(n<=100)表示学生人数。
第二行开始,每行表示一个学生的信息,第i+1行表示第i个学生的信息,从左至右依次表示该生的姓名(不超过8个字符)、数学成绩、物理成绩、外语成绩和毕业学校代码(代码用8位数字表示),每项信息间有一个空格隔开。
【输出格式】
输出文件名test.out
输出n个考生的总分排名,共n行,每行一个学生的信息,包括三项,姓名、总分、毕业学校代码。各项之间用一个空格隔开。
【输入样例】
3
Zhangsan 120 130 140 01000201
Lisi 125 120 135 01000306
Wangwu 130 135 145 21000126
【输出样例】
Wangwu 410 21000126
Zhangsan 390 01000201
Lisi 380 01000306
2014年12月26日 14点12分 2
level 11
圣梦星辉 楼主
program p1380;
var
s,b1,c1,d1,zf1:array[1..100] of string;
i,j,n,l,k,t,g:longint;
a:array[1..100,1..4] of integer;
b,c,d,zf,z,quchongzf:array[1..100] of integer;
begin
readln(n);
for i:=1 to n do
readln(s[i]);
for i:=1 to n do
begin
l:=1;
for j:=1 to length(s[i]) do
if s[i][j]=' ' then begin a[i,l]:=j; inc(l); end;
end;
{for i:=1 to n do begin
for j:=1 to 4 do
write(a[i,j],' '); writeln; end;}
for i:=1 to n do
begin
b1[i]:=copy(s[i],a[i,1]+1,a[i,2]-a[i,1]-1);
c1[i]:=copy(s[i],a[i,2]+1,a[i,3]-a[i,2]-1);
d1[i]:=copy(s[i],a[i,3]+1,a[i,4]-a[i,3]-1);
end;
//for i:=1 to n do writeln(b1[i],' ',c1[i],' ',d1[i]);
for i:=1 to n do begin
val(b1[i],b[i]); val(c1[i],c[i]); val(d1[i],d[i]);
zf[i]:=b[i]+c[i]+d[i]; str(zf[i],zf1[i]); end;
//for i:=1 to n do writeln(zf[i]{b[i],' ',c[i],' ',d[i]});
for i:=1 to n do begin
delete(s[i],a[i,1]+1,a[i,4]-a[i,1]-1);
insert(zf1[i],s[i],a[i,1]+1); end;
//for i:=1 to n do writeln(s[i]);
(*paixu*)
for i:=1 to n-1 do
begin
k:=i;
for j:=i+1 to n do
if zf[i]<zf[j] then k:=j;
if k<>i then begin t:=zf[k];zf[k]:=zf[i];zf[i]:=t; end;
end;
for i:=1 to n do
if zf[i]<>zf[i+1] then begin inc(g); quchongzf[g]:=zf[i]; end;
//for i:=1 to g do writeln(quchongzf[i]);
//for i:=1 to n do write(zf[i],' ');
for i:=1 to n do
val(copy( s[i],a[i,1]+1,length(zf1[i]) ),z[i]);
for i:=1 to g do begin
for j:=1 to n do
if z[j]=quchongzf[i] then writeln(s[j]); end;
end.
求解为什么只能得40分?
2014年12月26日 14点12分 3
我的缩进。。
2014年12月26日 14点12分
level 11
圣梦星辉 楼主
2014年12月26日 14点12分 4
level 11
圣梦星辉 楼主
求指教为什么只过4个点。。
2014年12月26日 14点12分 5
level 9
可能是因为没有考虑到学生名字里有空格的情况
2014年12月26日 15点12分 6
请问还有什么可能吗?
2014年12月26日 15点12分
level 11
圣梦星辉 楼主
求不沉。。
2014年12月27日 08点12分 7
level 11
建议边读入边将字符串处理成整形数据,使用记录类型(结构体)表示一个学生对象;看上去那个排序和后面的操作有些问题,貌似最后也不用去重,也不用反复进行字符串和数字间的转换
2014年12月27日 09点12分 8
(最后一句话的关联词用的不太恰当,求无视(>﹏<))
2014年12月27日 09点12分
谢,回去改进下
2014年12月27日 09点12分
回复 圣梦星辉 :不客气
2014年12月27日 10点12分
1