1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Giúp e tìm lỗi trong chương trình pascal này với

Chủ đề trong 'Hỏi đáp Tin học' bởi vannghitl, 09/04/2012.

  1. 1 người đang xem box này (Thành viên: 0, Khách: 1)
  1. vannghitl

    vannghitl Thành viên mới

    Tham gia ngày:
    09/04/2012
    Bài viết:
    1
    Đã được thích:
    0
    Program tinhmin;
    Type Mang=array[9..16,26..102] of real;

    var
    x,z,t,m,n:interger;
    c,min:real;
    A:Mang;

    begin

    repeat
    writeln(' nhap t, voi t= 8 hoac 16 hoac 24 ');
    Readln(t)
    Until (t=8) or (t=16) or (t=24);

    For x:=9 to 16 do for z:=26 to 102 do
    a[x,z]:= (390*x) + (45182.4/(x*z)) + (15158.6/x) + (12.045/x) + (292*t);

    min:=a[9,26];

    for x:=9 to 16 do for z:=26 to 102 do
    if a[x,z] = 85 thì kết quả bị âm.
    Các bác xem giúp e với
    Sao z >= 85 nó lại âm và làm sai hết kết quả ~X~X~X

    bài toán là
    với t=8 hoặc 16 hoặc 24
    9<= x <= 16
    26<= z <= 102
    tìm min cho phép toán
    c= 390*z + 45182.4/(xz) + 15158.6/x + 12.045/x + 292t


    Thanks các Pro
  2. tttoan

    tttoan Thành viên gắn bó với ttvnol.com

    Tham gia ngày:
    05/06/2004
    Bài viết:
    2.329
    Đã được thích:
    322
    Bạn thử đổi kiểu x,z,t,m,n:interger; thành real hết xem sao.
    ----------------------------- Tự động gộp bài viết ---------------------------
    Nhiều khả năng chỉ cần chuyển Z thành real là đủ. Giới hạn của Interger là 32655, khi đó nếu z=85 thì 390*z = 33150 > 32655 sẽ bị chuyển thành số âm.
  3. anhminhk42

    anhminhk42 Thành viên rất tích cực

    Tham gia ngày:
    01/04/2002
    Bài viết:
    2.671
    Đã được thích:
    1
    Mình thấy có vấn đề gì đâu. Không thể âm được. Có thể trình biên dịch của bạn bị virus làm sai lệch kết quả. down bản mới nhất về chạy xem.

Chia sẻ trang này