VMTEST - Thử máy
Tác giả: skyvn97
Ngôn ngữ: Pascal
program test;
uses crt;
var
s,sb,t:string;
a,r:real;
b,ck:integer;
i,j:integer;
fst:boolean;
num:boolean;
str:boolean;
err:boolean;
function ckstr(s:string):integer;
var
i:integer;
begin
b:=0;
val(s,a,b);
if (b<>0) then
begin
for i:=1 to length(s) do
begin
if ord('A')>ord(s[i]) then begin ckstr:=-1; exit; end;
if ord('z')<ord(s[i]) then begin ckstr:=-1; exit; end;
if (ord('Z')<ord(s[i])) and (ord('a')>ord(s[i])) then
begin ckstr:=-1; exit; end;
end;
ckstr:=1; exit;
end
else begin ckstr:=0; exit; end;
end;
begin
repeat
readln(s);
if (length(s)<>1) or (s[1]<>'?') then
begin
while (pos(' ',s)<>0) do delete(s,pos(' ',s),1);
fst:=true;
err:=false;
str:=false;
num:=false;
r:=0;
t:='';
if s[1]<>' ' then s:=' '+s;
if s[length(s)]<>' ' then s:=s+' ';
while pos(' ',s)<>length(s) do
begin
i:=pos(' ',s);
for j:=i+1 to length(s) do
if s[j]=' ' then break;
sb:=copy(s,i+1,j-i-1);
ck:=ckstr(sb);
if ck<0 then begin err:=true; break; end;
if ck=0 then
begin
if fst then
begin
fst:=false;
num:=true;
r:=a;
end
else begin
if str then err:=true
else r:=r+a;
end;
end;
if ck>0 then
begin
if fst then
begin
fst:=false;
str:=true;
t:=sb;
end
else begin
if num then err:=true
else t:=t+sb;
end;
end;
if err then break;
delete(s,i,j-i);
end;
if err then
begin
writeln('Error!');
continue;
end;
if num then
begin
writeln(r:0:6);
continue;
end;
if str then
begin
writeln(t);
continue;
end;
end
else halt;
until false;
end.