01/10/2018, 15:58
Tính tổng 1 + 1/2! + 1/3! + ... + 1/n!
Mình viết code như dưới đây xong rồi mình chạy thử thì ra kết quả khác với khi mình bấm máy tính, ai có thể xem giúp mình sai chỗ nào được không ạ?
#include <iostream>
#include <iomanip>
using namespace std;
float S( int n )
{
double A = 0;
for ( int i = 1 ; i <= n ; i++)
{
int gt = 1;
gt *= i;
A = A + ((double)1/gt);
}
return A;
}
int main()
{
int n;
cout<<"Nhap n : ";
cin>>n;
if ( n >= 20 )
{
cout<<"Nhap lai n : ";
cin>>n;
}
cout<<"S("<<n<<") = "<<setprecision(9)<<S(n);
return 0;
}
Bài liên quan
Sửa lại thành A = A + 1.0 / (double)gt; nha em!
em sửa lại chạy được nhưng kết quả lại khác với khi em bấm máy tính. ví dụ em nhập n = 5 kết quả ra bằng 2,2833333 trong khi máy tính ra bằng 1,71666667, em sai chỗ nào ạ?
Vứt dòng khởi tạo gt ra ngoài vòng for nhé.
Bạn tự đọc lại công thức với đoạn
xem có gì ổn hay không ổn không.
mình chạy vòng lặp ra giấy thử thấy giống nhau mà, cái công thức với cái đoạn mình viết cũng như nhau sao kết quả chả giống
2 bài khác nhau, sao bạn áp cùng 1 công thức được.
với 1 + 1/2! + … + 1/n!
đâu có, công thức khác mà bạn, bài sau mình viết công thức khác mà
Công thức khác nhưng code của bạn có khác gì không?
à mình xem lại rồi, code mình viết khác nhưng sai chỗ kia
cảm ơn bạn nha !