01/10/2018, 13:50
Tại sao hàm trả về kết quả `inf` trong C++?
Tôi đang tự học C++ và gặp phải vấn đề khi làm bài tập như sau, nhờ mọi người trong Dạy Nhau Học giúp đở dùm.
Đề bài: S = 1!/(x+k) + 2!/(x^2-k^2) + n!/(x^n + (-1^(n+1)*k^n)
Với n, x, k được nhập vào từ bàn phím.
Nếu nhập n=1 thì chương trình chạy đúng. Nhưng nếu tăng n = 2 hoặc n=3… thì hàm lại trả về kết quả S = inf
. Tôi đã xem kỹ và thử tới thử lui nhưng không được, nhờ mọi người gở rối dùm.
Code như sau:
#include <iostream>
#include <math.h>
using namespace std;
float Tong(int n,int x,int k)
{
float S;
int a=-1;
int b=1;
for(int i=1;i<=n;i++)
{
a *= -1;
b *=i;
S += b/(pow(x,i)+a*pow(k,i));
}
return S;
}
int main()
{
int n,x,k;
cout<<"Nhap n: ";
cin>>n;
cout<<"Nhap x: ";
cin>>x;
cout<<"Nhap k: ";
cin>>k;
cout<<"
S = "<<Tong(n,x,k);
return 0;
}
Cảm ơn mọi người!
Bài liên quan
Bạn chưa khởi tạo S. Vả lại chú ý điều kiện x!=+/-k.
Cảm ơn rogp10!
Nhưng tôi vẫn chưa hiểu ở chổ S thì do hàm tính ra tại sao mình phải khởi tạo. Với lại tại sao x! = +/- k vì trong bài không có x!. Mong rogp10 có thể giải thích thêm dùm để tôi có thể hiểu rỏ hơn.
nói về toán tử
+=
x += y
là cách viết khác của
x = x + y
nên biến
x
cần có giá trị trước khi dùng toán tử này, cụ thể ở đây phải khởi tạofloat S = 0
ở dòng 5!=
nghĩa là không bằng, khác.[quote=“thidogiathanh, post:3, topic:60308”]Nhưng tôi vẫn chưa hiểu ở chổ S thì do hàm tính ra tại sao mình phải khởi tạo
[/quote]
Nếu bạn không khởi tạo thì giá trị ban đầu của S sẽ là một con số vô chừng, cứ thế cộng tiếp vào thì chắc chắn sai như đã thấy.
Xin Cảm ơn! Chúc mọi người nhiều sức khỏe và thành công