VMTEST - Thử máy

Tác giả: ladpro98

Ngôn ngữ: Pascal

const   fi='';
var     inp:text;
        s:string;
        i,l,code:longint;
        t,sum:extended;
        err:boolean;
begin
        assign(inp,fi);reset(inp);
        while true do
        begin
                readln(inp,s);
                err:=false;
                while s[1]=' ' do delete(s,1,1);
                if s[1]='?' then break;
                if s[1] in ['A'..'z'] then
                begin
                        for i:=1 to length(s) do
                        if (s[i]<>' ') and (not (s[i] in ['A'..'z'])) then
                        begin
                                writeln('Error!');
                                err:=true;
                                break;
                        end;
                        if err then continue;
                        for i:=length(s) downto 1 do
                        if s[i]=' ' then delete(s,i,1);
                        writeln(s);
                        continue;
                end;
                if (s[1]='.') or (s[1]='-') or (s[1] in ['0'..'9']) then
                begin
                        sum:=0;
                        for i:=length(s) downto 2 do if (s[i]=' ') and (s[i-1]=' ') then delete(s,i,1);
                        if s[length(s)]<>' ' then s:=s+' ';
                        l:=1;
                        for i:=1 to length(s) do
                        if s[i]=' ' then
                        begin
                                Val(copy(s,l,i-l),t,code);
                                l:=i+1;
                                if code<>0 then
                                begin
                                        writeln('Error!');
                                        err:=true;
                                        break;
                                end;
                                sum:=sum+t;
                        end;
                        if err then continue;
                        writeln(sum:0:6);
                        continue;
                end;
                writeln('Error!');
        end;
        close(inp);
end.

Download