Bước nhập dữ liệu bạn cứ thử nhập vào xâu, rồi duyệt xâu đó từ cuối lên để đưa vào mảng:
Code:
ka := 0;
for i := length(str) downto 1 do
begin
inc(k);
a[ka] := ord(str[i]) - ord('0');
end;
Tương tự có mảng b nữa chẳng hạn, với kb là số các chữ số của số đó.
Bây giờ điền các số 0 vào phía trước số có chữ số bé hơn:
Code:
if ka < kb then
for i := ka+1 to kb do a[i] := 0
else
for i := kb+1 to kb do b[i] := 0;
Bây giờ duyệt ngược từ cuối lên để cộng, kết quả lưu trong mảng c:
Code:
if ka < kb then k := kb else k := ka;
du := 0;
for i := 1 to k do
begin
tong := a[i] + b[i] + du;
c[i] := tong mod 10;
du := tong div 10;
end;
Cuối dùng đưa số c ra màn hình:
Code:
for i := k downto 1 do write(c[i]);
Có thể cú pháp mình viết trên còn sai, nhưng ý tưởng chính là như thế. Bạn xem thử xem có giúp gì được không.