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.