Nhập vào hai xâu (tất cả đều kí tự số và độ dài không giới hạn),in ra hiệu của hai xâu đó bằng pascal

2 câu trả lời

uses crt;
var a, b: AnsiString;

function sub(a, b: AnsiString): AnsiString;
var ans: AnsiString;
    s, borrow, i: Longint;
begin
    borrow:=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
            s:=ord(a[i]) - ord(b[i]) - borrow;
            if s < 0 then
                begin
                    inc(s, 10);
                    borrow:=1;
                end else
                    borrow:=0;
            ans:=chr(s + 48) + ans;
        end;

    while(length(ans) > 1) and (ans[1] = '0') do
        delete(ans, 1, 1);
    exit(ans);
end;

begin
clrscr;
    readln(a);
    readln(b);
    writeln(sub(a,b));
readln;
end.

uses crt;
var s1,s2:string;
function tru(a,b:string):string;
var i,nho,t:longint;  
begin
   tru:='';
   while length(a)<length(b) do a:='0'+a;
   while length(b)<length(a) do b:='0'+b;
   nho:=0;
   for i:=length(a) downto 1 do
      begin
         t:=(ord(a[i])-48)-(ord(b[i])-48)-nho;
         nho:=0; 
         if t<0 then 
            begin 
               t:=(ord(a[i])-48)+10-(ord(b[i])-48)-nho;
               nho:=1;
            end;
         tru:=chr(t+48)+tru;
      end;
   while tru[1]='0' do delete(tru,1,1);
end;
begin 
clrscr;
   readln(s1);
   readln(s2);
   writeln(tru(s1,s2));
readln 
end.

Câu hỏi trong lớp Xem thêm