Cho xâu ký tự S gồm nhiều dòng, trong đó có các ký tự là chữ cái, chữ số và các ký tự đặc biệt. Tỉnh tổng các số có trong xâu S. Dữ liệu vào: Cho bởi tệp văn bản XAUKT.INP gồm nhiều dòng chứa các xâu kí tự có độ dài không quá 255. Kết quả:  Ghi vào tệp văn bản XAUKT.OUT gồm một số duy nhất là tổng các số có trong xâu S. VD: Input127378kithi tin  38748     hoc chuc2981928     mung nam 1985658888moi Output:1988806942

2 câu trả lời

uses crt;

var S : string; T, i, j : int64;

    f1, f2 : text;

function KT(i : byte) : string;

begin

    KT := '';

    while (S[i] in ['0' .. '9']) and (i <= length(S)) do

        begin

            KT := KT + S[i];

            delete(S, i, 1);

        end;

end;

begin

clrscr;

assign(f1, 'INPUT.INP'); reset(f1);

assign(f2, 'OUTPUT.OUT'); rewrite(f2);

T := 0;

while not eof (f1) do

    begin

        readln(f1, S);

        i := 1; while i <= length(S) do

            begin

                if S[i] in ['0' .. '9'] then

                    begin

                        val(KT(i), j);

                        T := T + j;

                    end

                else i := i + 1;

            end;

    end;

writeln(f2, T);

close(f1); close(f2);

readln

end.

uses crt;
const fi = 'XAUKT.INP';
      fo = 'XAUKT.OUT';
var res, s, st: string;
    i:byte;

function add(a, b: string): string;
var ans:string;
    rem, i, tmp:byte;
begin
    rem:=0; ans:='';
    while length(a) < length(b) do a:='0' + a;
    while length(b) < length(a) do b:='0' + b;
    for i:=length(a) downto 1 do
        begin
            tmp:=ord(a[i]) + ord(b[i]) - 96 + rem;
            rem:=tmp div 10;
            tmp:=tmp mod 10;
            ans:=chr(tmp + 48) + ans;
        end;
    if rem = 1 then ans:='1' + ans;
    exit(ans);
end;

begin
//    assign(input, fi);reset(input);
//    assign(output, fo);rewrite(output);
    
    while not eof do
        begin
            readln(s);
            st:='';
    
            for i:=1 to length(s) do
                if s[i] in ['0'..'9'] then
                    st:=st + s[i]
                else
                    begin
                        res:=add(res, st);
                        st:='';
                    end;
        end;
    writeln(res);
    
//    close(input);close(output);
end.