Giải phương bình bậc ba dạng cơ bản x^3 + b*x^2 + c*x + d = 0 (1) Bằng cách đặt ẩn phụ x = X - b/3 bao giờ ta cũng được (1) về dạng thiếu : X^3 + p*X + q = 0 Với p = c - (b^2)/3 ; q = d + (2*b^3)/27 - b*c/3 Do đó : Ta chỉ cần giải X^3 + p*X + q = 0 delta = q^2 + (4*p^3)/27 @ Nếu delta > 0 : nghiệm duy nhất. X = căn bậc ba của ((-q + căn bậc hai của delta)/2) + _ căn bậc ba của ((-q - căn bậc hai của delta)/2) @ Nếu delta < 0 : phương trình có ba nghiệm X1 = (căn bậc hai của (-4*p/3))*cos(G/3) X2 = (căn bậc hai của (-4*p/3))*cos((G + 2*pi)/3) X3 = (căn bậc hai của (-4*p/3))*cos((G + 4*pi)/3) với G = arccos((3*q*căn bậc ba của 3)/(p*căn bậc hai của(-4*p))) @ Nếu delta = 0 : phương trình có : # Nghiệm đơn : X1 = 3*q/p # Nghiệm kép : X2 = X3 = -3*q/(2*p) Tính giai thừa...
Đó là khóa 4. Mới học lý thuyết ngôn ngữ lập trình. Bài tập chương 3. Nên càng đơn giản càng tốt. + Làm ra đầy đủ luôn thì còn ai động não nữa Không tranh cãi nữa....
Ủa bữa nay khóa 4 có học thêm môn pascal hay sao mà mình thấy bài tìm giai thừa viết bằng ngôn ngữ pascal vậy
Cái này hơi lạ nghe, hồi giờ anh nghe thấy người ta thường bảo nhau rằng dựa vào thuật toán để viết code, chứ chưa nghe dựa vào code viết thuật toán bao h, có code rồi viết thuật toán chi nữa chuyển từ pascal qua ngôn ngữ C thôi. Thanks đã chia sẻ thuật toán hay.
code bài giai thừa bằng C++: Mã: #include<iostream> using namespace std; main() { float n,x=1; cout<<"\nNhap so: "; cin>>n; for(int i=1;i<=n;i++) x*=i; cout<<x; }