Hỏi về Pascal

  • Bắt đầu script
  • Ngày bắt đầu
S

script

Guest
Hỏi về Pascal
e đang học lập trình pascal đề bài tính s=sqrt(a-b)+1/(2^2)+1/(3^2)+1/(4^2)+...+1/(n^2) a,b,n nhập từ bàn phím
và đây là chương trình các anh xem hộ em trong 2 chương trình thì chương trình nào sai
code 1:
Mã:
uses crt;
var
s1,s:real;
a,b,i,n:integer;
begin
clrscr;
writeln('nhap n');
readln(n);
writeln('nhap a,b');
readln(a,b);
if (a
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
S
  • script
em đang cần gấp :(
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
0^38 là số lớn nên phải dùng kiểu dữ liệu Extended (Số thực mở rộng)
Ta dùng hàm Exp là hàm mũ là hàm ngược của hàm ln (log Nêpe) nghĩa là dùng Exp(38*ln(10)) để lấy giá trị 10 mũ 38.
Bạn hãy xem chương trình sau:
VAR T:extended;
Begin
T:=exp(38*ln(10));
Writeln(T);
Readln;
End.
Muốn chạy chương trình trên bạn phải vào Menu của Turbo Pascal và chọn : Options > Compiler
Chọn 8087/80287 (Mục Numeric Processing)
OK
Sau đó mới chạy Ctrl + F9
Chúc bạn thành công
từ đây suy nghĩ ra nhá
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Mình có vài ý kiến như sau:
- Cả 2 code đều sai ở chỗ khi a Sai kết quả. Với trường hợp a>b thì đúng. Nhưng mình góp ý 1 tí ở phần code, là bạn nên có khởi tạo giá trị cho s và s1 =0, trước khi thực hiện tính toán.
- Cả 2 code nó chẳng khác gì nhau cả, chỉ khác việc bạn gán s:=s1 trong else hay ở phần thân chương trình chính --> Tư duy code của bạn chưa thực sự tốt lắm.
- Ngoài ra bạn cũng nên biết một số giới hạn của các kiểu biến, để tránh trường hợp bị tính toán quá giới hạn ở việc tính mũ kia. Tốt hơn hết là bạn nên tính bằng biểu thức (1/i) * (1/i). Vì với khi viết 1 / sqr(i), thì pascal sẽ tính sqr(i) trước và với i lớn quá một mức nhất định thì sẽ vượt quá kiểu biến real --> sẽ bị lỗi.
http://wiki.freepascal.org/Variables_and_Data_Types
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
S
  • script
em cam on cac anh
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên