Được gửi bởi
kieutrangnvt
anh chị nào giúp em bài này với ạ
In ra chữ số thứ N trong phần thập phân của thương số khi chia p cho q.
Code:
(*In ra chữ số thứ N trong phần thập phân
của thương số khi chia p cho q.*)
program In_N;
var
p :integer; {số chia}
q :integer; {số bị chia}
r :real; {kết quả = p/q}
N :integer; {chữ số N trong phần thập phân}
f :real; {phần thập phân}
i :LongInt; {phần nguyên}
m :byte; {Kết quả}
v :integer; {vòng lặp}
begin
write ('Nhap so chia p:='); readln (p);
write ('Nhap so bi chia q:='); readln (q);
write ('Nhap so N:='); readln (N);
r := p/q; {thực hiện phép chia}
f := frac (r); {lấy phần thập phân}
for v:=1 to (N+1) do f := f *10; {dịch chuyển f theo số N}
i := trunc (f); {làm tròn}
m := i mod 10; {chữ số cuối cùng hàng đơn vị trong số là kết quả}
writeln;
writeln ('Phep chia p/q = ',r);
writeln ('Chu so N= ',N,' trong phan thap phan la = ',m);
readln;
end.
Chú ý: vì trong phép chia, chữ số thập phân có khi trải dài nhiều đến vô tận,
nên phép gán này: i := trunc (f); i có kiểu LongInt, f là real, khi f vượt quá i sẽ tràn biến, kết quả sẽ không chính xác nữa.
Nên code trên chỉ đúng với N nhỏ (N<12).
Tôi có cách khác tổng quát hơn với N bất kỳ, chữ số 100 tỷ chẳng hạn, cũng tính được, không hạn chế.
Nhưng tôi nghĩ yêu cầu của bạn trên đến đây là được rồi. (Lập trình với số lớn)
Bookmarks