谁拿了最多奖学金pascal程序

题意

找出奖学金最多的学生


分析

这题就是很简单的字符串处理,细心一点就好。

先把每一个学生的奖学金算出来,再排序,如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。


var
n,tj,i,gb,xb,lw,q,b,j:longint;
m:array[0..100]of string;
t,p:array[0..100]of longint;
s:string;
begin
    readln(n);tj:=0;
    for i:=1 to n do
    begin
        readln(s);
        m[i]:=copy(s,1,pos(' ',s)-1);
        delete(s,1,pos(' ',s));
        val(copy(s,1,pos(' ',s)-1),q);
        delete(s,1,pos(' ',s));
        val(copy(s,1,pos(' ',s)-1),b);
        delete(s,1,pos(' ',s));
        if copy(s,1,pos(' ',s)-1)='Y' then gb:=1 else gb:=0;
        delete(s,1,pos(' ',s));
        if copy(s,1,pos(' ',s)-1)='Y' then xb:=1 else xb:=0;
        delete(s,1,pos(' ',s));
        lw:=ord(s[1])-ord('0');
        if (q>80)and(lw>=1) then
        begin
            tj:=tj+8000;
            t[i]:=t[i]+8000;
        end;
        if (q>85)and(b>80) then
        begin
            tj:=tj+4000;
            t[i]:=t[i]+4000;
        end;
        if (q>90) then
        begin
            tj:=tj+2000;
            t[i]:=t[i]+2000;
        end;
        if (xb=1)and(q>85) then
        begin
            tj:=tj+1000;
            t[i]:=t[i]+1000;
        end;
        if (gb=1)and(b>80) then
        begin
            tj:=tj+850;
            t[i]:=t[i]+850;
        end;
        p[i]:=i;
    end;
    for i:=1 to n-1 do
    begin
        for j:=i+1 to n do
        if (t[i]<t[j])or(t[i]=t[j])and(p[j]<p[i]) then
        begin
            t[0]:=t[i];t[i]:=t[j];t[j]:=t[0];
            p[0]:=p[i];p[i]:=p[j];p[j]:=p[0];
            m[0]:=m[i];m[i]:=m[j];m[j]:=m[0];
        end;
    end;
    writeln(m[1]);
    writeln(t[1]);
    write(tj);
end.

原文地址:https://www.cnblogs.com/YYC-0304/p/9500210.html