vijos p1001 高手进(在线等

来源:百度知道 编辑:UC知道 时间:2024/05/30 17:41:53
program P1000;
var
name:array[1..100] of string;
a1,a2,a5,money:array[1..100] of integer;
a3,a4:array[1..100] of char;
n,b,c,d,a:integer;
max:longint;
x,y:string;
begin
readln(n);
for b:=1 to n do
read(a1[b],a2[b],a3[b],a4[b],a4[b],a5[b]);{这里读入数据时的错误是106——错误的数字格式,我不知道怎么改}
for b:=1 to n do begin
money[b]:=0;
if (a1[b] > 80) and (a5[b] >= 1) then
money[b]:=money[b]+8000;
if (a1[b] > 85) and (a2[b] > 80) then
money[b]:=money[b]+4000;
if a1[b] > 90 then
money[b]:=money[b] + 2000;
if (a1[b] > 85) and (a4[b] = 'Y') then
money[b]:=money[b]+1000;
if (a2[b] > 80) and (a3[b] = 'Y') then
money[b]:=money[b]+850;
end;
for b:=1 to n do
max:=max+money[b];
for b:=1 to n do
for c:=b+2 to n do
if money[b] < money[c] then begin<

read(a1[b],a2[b],a3[b],a4[b],a4[b],a5[b])
你自己看看自己在读什么?
数据是这样给出的
YaoLin 87 82 Y N 0
貌似第一个是名字,然后是分数……
pascal里面数字和字符最好不要连起来读入,因为读字符时默认是忽略空格。譬如你读完82,然后是一个字符,但是电脑默认的是空格,而不是“Y”。
这道题目的输入考的是字符串的处理。你直接读入一个字符串,以空格为分界线,一个个处理好了。

综合楼上的:read(a1[b],a2[b],a3[b],a4[b],a4[b],a5[b])
你自己看看自己在读什么?
数据是这样给出的
YaoLin 87 82 Y N 0
貌似第一个是名字,然后是分数……
pascal里面数字和字符最好不要连起来读入,因为读字符时默认是忽略空格。譬如你读完82,然后是一个字符,但是电脑默认的是空格,而不是“Y”。
这道题目的输入考的是字符串的处理。你直接读入一个字符串,以空格为分界线,一个个处理好了。
————————————————————————
个人观点
type
tj=record
m:string;
q,b:integer;
g,s:char;
l:integer;
end;
var
a:array[1..100]of tj;
i,n:integer;
j,t,max:longint;
maxn:string;
ch,ch1,ch2:char;
begin
readln(n);
for i:=1 to n do
begin
ch:='1';
while not(ch=' ')do
begin
read(ch);
a[i].m:=a[i].m+ch;
end;
read(a[i].q,a[i].b,ch2);
read(a[i].g,ch1,a[i].s);