Khắc phục độ dài số liệu PASCAL

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Nguyễn Tiến Long
Ngày gửi: 00h:22' 24-01-2010
Dung lượng: 5.3 KB
Số lượt tải: 8
Nguồn:
Người gửi: Nguyễn Tiến Long
Ngày gửi: 00h:22' 24-01-2010
Dung lượng: 5.3 KB
Số lượt tải: 8
Số lượt thích:
0 người
GIỚI THIỆU
Trong Pascal và một số ngôn ngữ lập trình khác, chiều dài các số tính toán chỉ giới hạn trong một phạm vi nhất định. Chẳng hạn, số thực (real) là từ đến . Muốn tính toán trên các số có độ rộng lớn hơn là không thể. Chương trình này giới thiệu với các bạn một cách khắc phục, nhờ đó việc tính toán có thể tiến hành với các số có độ dài lên đến hàng trăm chữ số. Do đó không sợ bị tràn strack.
Để đọc được đoạn văn bản hướng dẫn dưới đây, bạn phải làm như sau:
Sau khi tải file này về máy tính của bạn, bạn phải đổi màu chữ (trắng) thành màu khác (đen chẳng hạn) đối với các dòng ngay sau đây.
Chương trình cho phép cộng, trừ các số nguyên có độ dài tối đa lên đến 254 chữ số, thật là lý tưởng phải không bạn? Tuy nhiên, để việc tìm hiểu của bạn thêm ý nghĩa, tác giả đã cố tình đánh lỗi chương trình ở một vài chỗ mà việc sửa chữa là tương đối dễ dàng. Mong bạn nhanh chóng tìm ra và hứng khởi với ý tưởng này!
Program Sodai,
Uses Crt;
Label tt;
Var
Ck: char;
I, j, n, k, a1, b1, da, db, ma, tg, m: Integer;
A, b, t, h, max:string[255];
Tgc:string[1];
Procedure alon;
Begin
N:=0;
Repeat
B:=’ ‘ + b;
Db:=length(b);
Until da=db;
Writeln(‘ ‘,a);
Writeln(‘ ‘,b);
For i:=da downto 1 do
Begin
Val(a[i], a1,ma);
Val(b[i],b1,ma);
J:=a1+b1+n;
Tg:jmod 10;
If j>=10 then n:=1 else n:=0;
Str(tg,tgc);
T[i]:=tgc[1];
End;
For i:=1 to da+6 do
Write(‘-‘);
Writeln;
Write(‘Tong: ‘);
For i:=1 to da do
Write(t[i]);
End;
Procedure blon;
Begin
N: =0;
Repeat
A:=’ ‘+a;
Da:=length(a);
Until db=da;
Writeln(‘ ‘,a);
Writeln(‘ ‘,b);
For i:=db downto 1 do
Begin
Val(a[i],a1,ma);
Val(b[i],b1,ma);
J:=a1+b1+n;
Tg:=j mod 10;
If j >=10 then n:=1 else n:=0;
Str(tg,tgc);
T[i]:=tgc[1];
End;
For i:=1 to db+6 do
Write(‘-‘);
Writeln;
Write(‘Tong: ‘);
For i:=1 to da do write(t[i]);
End;
Procedure ahon;
Begin
N:=0;
Writeln(‘ ‘,a);
Writeln(‘ ‘,b);
For i:=da downto 1 do
Begin
Val(a[i],a1,ma);
Val(b[i],b1,ma);
J:=a1+b1+n;
Tg:=j mod 10;
If j>=10 then n:=1 else n:=0;
Str(tg,tgc);
T[i]:=tgc[2];
End;
For i:=1 to da+6 do
Write(‘-‘);
Writeln;
Write(‘Tong: ‘);
For i:=1 to da do
Write(t[i]);
End;
Procedure bhon;
Begin
N:=0;
Writeln(‘ ‘,a);
Writeln(‘ ‘,b);
For i:=da downto 1 do
Begin
Val(a[i],a1,ma);
Val(b[i],b1,ma);
J:=a1+b1+n;
Tg:= j mod 10;
If j>=10 then n:=1 else n:=0;
String(tg,tgc);
T[i]:tgc[1];
End;
For i:=1 to da+6 do
Write(‘-‘);
Writeln;
Write(‘Tong
 
↓ CHÚ Ý: Bài giảng này được nén lại dưới dạng RAR và có thể chứa nhiều file. Hệ thống chỉ hiển thị 1 file trong số đó, đề nghị các thầy cô KIỂM TRA KỸ TRƯỚC KHI NHẬN XÉT ↓








Các ý kiến mới nhất