1道pascal题

来源:百度知道 编辑:UC知道 时间:2024/05/29 14:25:41
【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。如果一局比赛刚开始,则此时比分为0比0。
你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。

【输入格式】每个输入文件包含若干行字符串(每行至多20个字母),字符串有大写的W、L和E组成。其中E表示比赛信息结束,程序应该忽略E之后的所有内容。

【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。其中第一部分是11分制下的结果,第二部分是21分制下的结果,两部分之间由一个空行分隔。

【输入样例】
WWWWWWWWWWWWWWWWWWWW
WWLWE

【输出样例】
11:0
11:0
1:1

21:0
2:1

我有更简单的
var
a,b,x : longint;
c : char;

procedure solve(t : byte);
begin
reset(input);
a := 0; b := 0;
repeat
if eoln then readln;
read(c);
if c = 'E' then break;
if c = 'W' then inc(a) else inc(b);
x := abs(a-b);
if (a >= t) or (b >= t) then
if x >= 2 then begin
writeln(a,':',b);
a := 0; b := 0;
end;
until false;
writeln(a,':',b);
writeln;
end;

begin
assign(input,'table.in1');
assign(output,'table.out'); rewrite(output);
solve(11);
solve(21);
close(input); close(output);
end.

根据提供的数据统计乒乓球比赛在21分制和11分制两种赛制下的具体比分情况。
编程时注意几个细节即可。
一是数据的输入,结束标志E不一定出现在文件的末尾;
二是对每局比赛结束的判断,某局比赛只能在双方的分差大于1分时结束;
三是输入结束时要输出当前的比分情况,即使当前比分是0:0。
程序:
function next: char;
var
c