Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Reviews hay rinh note 4, galaxy V được vi vu Hàn Quốc

Gameshow “Ai Là Triệu Phú” trên VTV đang chờ đón bạn – Tải ngay!

Lời mời tham dự chương trình từ thiện "Giáng Sinh Trong Mắt Em"

Mời anh em tham gia Vn-zoom support team

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Vn-Zoom.com tặng các bạn thành viên may mắn một chiếc Note 4
Trang 1/4 1 2 3 ... cuốicuối
kết quả từ 1 tới 15 trên 53
  1. #1
    die4rock's Avatar
    die4rock vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Dec 2007
    Bài
    212
    Cảm ơn
    13
    Điểm
    40/28 bài viết

    Default Hàm tính giai thừa trong C!

    Mình mới học C làm 1 bài tính giai thừa như sau:


    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    int n,i;
    unsigned long s=1;
    clrscr();
    printf("\n Nhap n:");scanf("%d",&n);
    for (i=1;i<=n;i++)
    s*=i;
    printf("n!= %d",s);
    getch();
    }

    Chỉ đơn giản thế thôi,nhưng chương trình chỉ chạy đúng đến n=7, tới n=8 trở đi kết quả đều ra sai (8!=-25216???).Nhờ các bạn chỉ giúp mình với

  2. #2
    darling's Avatar
    darling vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Dec 2007
    Bài
    496
    Cảm ơn
    43
    Điểm
    349/117 bài viết

    Default

    code bạn đúng mà. 8! = 40320 mà, bạn nhập sao mà đáp án sai thế!!!

    nếu bạn mới học C mời bạn wa diễn đàn mình vui chơi thử lập trình nha

  3. #3
    die4rock's Avatar
    die4rock vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Dec 2007
    Bài
    212
    Cảm ơn
    13
    Điểm
    40/28 bài viết

    Default

    Mình chịu.Mình chỉ tính đúng đến n=7.Còn từ 8 trở đi là sai hết.Mình vừa thử ở 1 máy khác cũng tương tự Bạn nào biết chỉ mình với !!!

  4. #4
    darling's Avatar
    darling vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Dec 2007
    Bài
    496
    Cảm ơn
    43
    Điểm
    349/117 bài viết

    Default


    Mình theo code của bạn nè, mình nhập n=8 đáp án đúng mà??? cái này thật tình khó hiểu nha. Dùng visual studio 6.0 nha

  5. #5
    die4rock's Avatar
    die4rock vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Dec 2007
    Bài
    212
    Cảm ơn
    13
    Điểm
    40/28 bài viết

    Default

    Đây mình chạy bằng Turbo C
    n=7

    n=8

  6. #6
    darling's Avatar
    darling vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Dec 2007
    Bài
    496
    Cảm ơn
    43
    Điểm
    349/117 bài viết

    Default

    vậy thì mình xin pótay. đây là trường hợp đầu tiên mình gặp. sr

  7. #7
    die4rock's Avatar
    die4rock vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Dec 2007
    Bài
    212
    Cảm ơn
    13
    Điểm
    40/28 bài viết

    Default

    Nhờ bác nào biết chỉ mình với.Gấp quá rồi.Đúng là code mình viết chạy ngon trên Cfree nhưng đi thi đâu có dùng cái đó chỉ có Turbo C++ thôi.

  8. #8
    thienthan's Avatar
    thienthan vẫn chưa có mặt trong diễn đàn Rìu Bạc
    Tham gia
    Nov 2007
    Bài
    313
    Cảm ơn
    43
    Điểm
    118/85 bài viết

    Default

    Thuật toán của bạn không hề sai.
    Theo như bạn mô tả chắc là do tràn kiểu dữ liệu thôi. Một số phần mềm lập trình vẫn cho phép. Nó thực hiện tính toán bình thường nhưng nếu có cờ thì nó không được chuyển vào bit tiếp do không còn bit mà chuyển nữa. Kết quả là số được lưu chỉ có một phần thôi.
    Phần ép kiểu nâng cao của C++ cũng dính một tí.

    Rất đơn giản bạn thử thay nó thành kiểu long (unsigned) 4 byte thoải mái luôn vì số không âm. int trong TC chắc nó lấy dos chỉ có 2 byte thôi.

  9. #9
    die4rock's Avatar
    die4rock vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Dec 2007
    Bài
    212
    Cảm ơn
    13
    Điểm
    40/28 bài viết

    Default

    Bạn đọc lại code mình viết mà xem,mình đã dùng unsigned long rồi đấy thôi.

  10. #10
    thienthan's Avatar
    thienthan vẫn chưa có mặt trong diễn đàn Rìu Bạc
    Tham gia
    Nov 2007
    Bài
    313
    Cảm ơn
    43
    Điểm
    118/85 bài viết

    Default

    Chịu rồi!
    Giờ thì chỉ còn biết đổ cho lỗi của trình dịch thôi.
    Đã để unsigned rồi mà vẫn có số âm. Bó đầu luôn.
    Bạn thử bỏ unsigned đi vẫn có thể lưu được số khá dài xem còn lỗi đó không.

    Thông cảm mình sài VC++ không test làm gì?

  11. #11
    die4rock's Avatar
    die4rock vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Dec 2007
    Bài
    212
    Cảm ơn
    13
    Điểm
    40/28 bài viết

    Default

    Mình dùng đủ kiểu rồi,k0 ra.Cái chính là đi thi phải dùng TC++.Mà mình sắp thi rồi.Có ai biết cao thủ nào k0 chỉ mình với.Vì đây chỉ là bài toán đơn giản,quan trọng là mình phải làm nhiều bài toán phức tạp hơn phải dùng hàm tính giai thừa.

  12. #12
    thienthan's Avatar
    thienthan vẫn chưa có mặt trong diễn đàn Rìu Bạc
    Tham gia
    Nov 2007
    Bài
    313
    Cảm ơn
    43
    Điểm
    118/85 bài viết

    Default

    Không dùng được chuột làm khổ lắm.
    TC++ à thử làm cách khác xem như thế nào.
    Code:
    #include <iostream>;
    unsigned long giathua(unsigned byte n) {
    unsigned long tmp=1;
    for (unsigned byte i=2; i<=n; i++) tmp*=i;
    return tmp;
    }

  13. #13
    die4rock's Avatar
    die4rock vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Dec 2007
    Bài
    212
    Cảm ơn
    13
    Điểm
    40/28 bài viết

    Default

    Chịu rồi hàm của bạn cũng k0 tác dụng.Nó có khác gì hàm của mình đâu??

  14. #14
    die4rock's Avatar
    die4rock vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Dec 2007
    Bài
    212
    Cảm ơn
    13
    Điểm
    40/28 bài viết

    Default

    Hô hô mình tìm ra rồi,vấn đề nằm ở câu lệnh này:
    printf("n!= %d",s);
    Hehe dùng đặc tả %d là sai vì nó chỉ ra kiểu int.Sửa lại đặc tả %lu là xong.

  15. Có 1 thành viên cảm ơn die4rock cho bài viết này:
    thuongquoc_dn (15-12-2011)

  16. #15
    darling's Avatar
    darling vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Dec 2007
    Bài
    496
    Cảm ơn
    43
    Điểm
    349/117 bài viết

    Default

    hay nhỉ/!!! nhưng sao VC thì lại ko bị lỗi ta -->

  17. Có 1 thành viên cảm ơn darling cho bài viết này:
    huutai (18-04-2011)

 

 
Trang 1/4 1 2 3 ... cuốicuối

Quyền sử dụng

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