Trang 1 / 2 12 LastLast
Hiển thị kết quả từ 1 đến 10 / 11
  1. #1
    Tham gia
    24-10-2007
    Bài viết
    12
    Like
    0
    Thanked 0 Times in 0 Posts

    làm pascal theo nguồn nhưng không chạy nhờ giải thích

    program vidu;
    uses crt;
    var a,b,c,d:integer;
    z:real;

    ............................

    procedure enter(var x,y:integer);
    var ok:char;
    begin
    repeat
    write('tu so =');readln(x);
    write('mau so =');readln(y);
    write('co dung so lieu khong (c,k)?');
    ok:=readkey;
    writeln;
    until(ok='k') or (ok='k');
    end;

    .........................

    function chia(x,y:integer):real;
    begin
    if y<>0 then chia:=x/y
    else
    begin
    writeln(#7,'ko chia duoc cho 0');
    halt;
    end;
    end;

    ......................

    begin
    enter(a,b);
    enter(c,d);
    z:=chia(a,b)*chia(c,d);
    write('ti so (a/b)*(c/d) la',z);
    writeln('an enter de ket thuc');
    readln;
    end.


    mình làm xong như vậy nhưng khi chạy điền x, y xog nhan enter nó lại chạy lại bắt mình nhập lại x, y liên tục mà không thấy chia để ra ket quả tỉ số.
    không biết cái đó là do thiếu cái chi mà nó không chạy
    ai bik chỉ mình với cảm ơn rất nhìu hix hix
    Quote Quote

  2. #2
    Tham gia
    01-01-2006
    Bài viết
    202
    Like
    0
    Thanked 1 Time in 1 Post
    until(ok='c') or (ok='C');
    Đó.

  3. #3
    Tham gia
    24-10-2007
    Bài viết
    12
    Like
    0
    Thanked 0 Times in 0 Posts
    nếu thay until(ok='c') or (ok='C') vô until(ok='k') or (ok='K') thì có khác gì đâu bạn
    mình thay thử nhưng nó cũng giống như cũ

  4. #4
    Tham gia
    28-03-2008
    Bài viết
    108
    Like
    1
    Thanked 2 Times in 2 Posts

    Câu hỏi, cần giúp đỡ

    Bạn phải nhập một kí tự nào đó đã, đoạn đó bạn thêm như sau:
    write('co dung so lieu khong (c,k)?');
    readln(ok);
    writeln;
    until(ok='k') or (ok='k');

  5. #5
    Tham gia
    24-10-2007
    Bài viết
    12
    Like
    0
    Thanked 0 Times in 0 Posts
    vẫn không được bạn ơi. hix mình thấy nó thiếu một bước nào đó để chạy phép chia hix.
    không biết bạn nào còn cài pascal có thể chạy thử giúp mình không.
    mình chạy nó cứ bất nhập x,y mà không thực hiện được các phép toán nào hết

  6. #6
    Tham gia
    07-02-2009
    Location
    Sao Hoả
    Bài viết
    1,261
    Like
    923
    Thanked 1 Time in 1 Post
    Hình như phải sửa dòng sau:
    if y<>0 then chia:=x/y
    thành:
    if y<>0 then t:=x/y
    thêm dòng này ở cuối chương trình con:
    chia:=t
    Phải khai báo thêm một biến t nữa.

  7. #7
    Tham gia
    24-10-2007
    Bài viết
    12
    Like
    0
    Thanked 0 Times in 0 Posts
    bạn ơi khi mình khai báo function chia(x,y:integer):real thì phép toán chia:=x/y vẫn được chứ phải không bạn. mình đã thử thay t như bạn nói vào một số chỗ nhưng không được mà tại mình cũng mới đang tap học pascal nên không hiểu ý của bạn lắm, bạn có thể viết luôn dòng lệnh đó giúp mình được không

  8. #8
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    bạn nên bỏ mấy dấu chấm (........) ở giữa các phần chương trình đi , sau khi mình bỏ đi thì chương trình chạy được và ra kết quả đúng

  9. #9
    Tham gia
    10-05-2009
    Bài viết
    5
    Like
    0
    Thanked 0 Times in 0 Posts
    Chương trình của bạn đã được bạn grenadier1991 giải thích đúng rồi đó. Vì bạn hỏi "Có đúng số liệu không?(c/k)" nên nếu bạn muốn ngưng nhập thì bạn phải bấm c và bạn bấm phím bất kỳ để nhập lại. Vì điều kiện của Until là điều kiện thoát (nếu đúng thì thoát) nên bạn phải sửa lại là:
    Repeat
    ...
    Until (Ok='c') or (Ok='C');

    Vì trong chương trình bạn gọi thủ tục Enter tới 2 lần cho nên có thể bạn sơ ý không nhận ra là chương trình đã chạy đúng khi sửa lại.

    Tôi đã thử chạy thủ tục Enter của bạn rồi và không có vấn đề gì.

    Tuy nhiên nếu bạn đã kiểm tra kỹ mà vẫn bị lỗi như vậy là do một trường hợp hiếm gặp khiến cho hàm Readkey không đọc đúng giá trị.

    ___________________________________
    Trường THPT Thanh Đa - thptthanhda.net
    Được sửa bởi NationPham lúc 10:59 ngày 12-05-2009

  10. #10
    Tham gia
    24-10-2007
    Bài viết
    12
    Like
    0
    Thanked 0 Times in 0 Posts
    Chắc mình gặp trường hợp hiếm rùi. không biết trường hợp này xẩy ra do chương trình pascal hay do máy vậy ta. và không biết có cách khắc phục không nhỉ.
    Cảm ơn các bạn đã quan tâm

Trang 1 / 2 12 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •