![]() |
|
|
#1 |
|
Rìu Sắt
![]() Tham gia: Dec 2007
Bài: 177
VZD: 3.651
Điểm: 39/26 bài viết
|
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
__________________
Giáo dục giới tính-Chuyenkhonoi.net
|
|
|
|
|
|
#2 |
|
Rìu Sắt Đôi
![]() Tham gia: Dec 2007
Bài: 226
VZD: 5.168
Điểm: 74/44 bài viết
|
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
__________________
Web site lập trình C/C++ http://it9x.co.cc Kiếm tiền bằng sms http://ps.vietguys.biz/network/0989211841 |
|
|
|
|
|
#3 |
|
Rìu Sắt
![]() Tham gia: Dec 2007
Bài: 177
VZD: 3.651
Điểm: 39/26 bài viết
|
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 !!!
__________________
Giáo dục giới tính-Chuyenkhonoi.net
|
|
|
|
|
|
#4 |
|
Rìu Sắt Đôi
![]() Tham gia: Dec 2007
Bài: 226
VZD: 5.168
Điểm: 74/44 bài viết
|
![]() 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
__________________
Web site lập trình C/C++ http://it9x.co.cc Kiếm tiền bằng sms http://ps.vietguys.biz/network/0989211841 |
|
|
|
|
|
#5 |
|
Rìu Sắt
![]() Tham gia: Dec 2007
Bài: 177
VZD: 3.651
Điểm: 39/26 bài viết
|
Đây mình chạy bằng Turbo C
n=7 ![]() n=8
__________________
Giáo dục giới tính-Chuyenkhonoi.net
|
|
|
|
|
|
#6 |
|
Rìu Sắt Đôi
![]() Tham gia: Dec 2007
Bài: 226
VZD: 5.168
Điểm: 74/44 bài viết
|
vậy thì mình xin pótay. đây là trường hợp đầu tiên mình gặp. sr
__________________
Web site lập trình C/C++ http://it9x.co.cc Kiếm tiền bằng sms http://ps.vietguys.biz/network/0989211841 |
|
|
|
|
|
#7 |
|
Rìu Sắt
![]() Tham gia: Dec 2007
Bài: 177
VZD: 3.651
Điểm: 39/26 bài viết
|
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.
__________________
Giáo dục giới tính-Chuyenkhonoi.net
|
|
|
|
|
|
#8 |
|
Rìu Sắt Đôi
![]() |
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 |
|
Rìu Sắt
![]() Tham gia: Dec 2007
Bài: 177
VZD: 3.651
Điểm: 39/26 bài viết
|
Bạn đọc lại code mình viết mà xem,mình đã dùng unsigned long rồi đấy thôi.
__________________
Giáo dục giới tính-Chuyenkhonoi.net
|
|
|
|
|
|
#10 |
|
Rìu Sắt Đôi
![]() |
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 |
|
Rìu Sắt
![]() Tham gia: Dec 2007
Bài: 177
VZD: 3.651
Điểm: 39/26 bài viết
|
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.
__________________
Giáo dục giới tính-Chuyenkhonoi.net
|
|
|
|
|
|
#12 |
|
Rìu Sắt Đôi
![]() |
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 |
|
Rìu Sắt
![]() Tham gia: Dec 2007
Bài: 177
VZD: 3.651
Điểm: 39/26 bài viết
|
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??
__________________
Giáo dục giới tính-Chuyenkhonoi.net
|
|
|
|
|
|
#14 |
|
Rìu Sắt
![]() Tham gia: Dec 2007
Bài: 177
VZD: 3.651
Điểm: 39/26 bài viết
|
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.
__________________
Giáo dục giới tính-Chuyenkhonoi.net
|
|
|
|
|
|
#15 |
|
Rìu Sắt Đôi
![]() Tham gia: Dec 2007
Bài: 226
VZD: 5.168
Điểm: 74/44 bài viết
|
hay nhỉ/!!! nhưng sao VC thì lại ko bị lỗi ta -->
__________________
Web site lập trình C/C++ http://it9x.co.cc Kiếm tiền bằng sms http://ps.vietguys.biz/network/0989211841 |
|
|
|