Kiến thức

TVIT Blog’s

Bạn đang xem: TVIT Blog’s

Lập trình với SQL : Phương trình bậc 2

Bài này mình hướng dẫn bạn lập trình bằng SQL; mô tả bằng việc giải phương trình bậc 2 trong SQL. Đây không phải là bài toán khó nhưng cái mình muốn giới thiệu đó là cách dùng ngôn ngữ SQL để lập trình.

Bạn đã quen với phương trình bậc 2  ax2+bx+c=0 với thuật giải:

Nếu a=0
    Không phải bậc 2
Nếu a>0
    Tình delta=b2-4ac
    Nếu delta>0
        Phương trình có 2 nghiệm, x1,x2
    Nếu delta=0
        Phương trình có nghiệm kép x=…
    Nếu delta<0
        Phương trình vô nghiệm

Thuật toán thì dễ nhưng có thể có nhiều bạn chưa biết lập trình trong SQL.

-- ============================================= -- Author: webmaster@hmweb.com.vn -- Description: <Giải PT bậc 2> -- ============================================= CREATE FUNCTION fuPhuongTrinhBac2 ( @a decimal(18,2), @b decimal(18,2), @c decimal(18,2) ) RETURNS nvarchar(2000) AS BEGIN DECLARE @delta decimal(18,2) SET @delta=0.00 DECLARE @Result nvarchar(2000) SET @Result='' IF @a=0 SET @Result=N'Phương trình không phải bậc 2' ELSE BEGIN SET @delta=@b*@b-4*@a*@c IF @delta>0 BEGIN SET @Result=@Result+ N'Phương trình có 2 nghiệm: x1='+ Cast(((-@b)+SQRT(@delta))/(2*@a) AS nvarchar(300))+';' SET @Result=@Result+ N' x2='+ Cast(((-@b)-SQRT(@delta))/(2*@a) AS nvarchar(300))+'' END IF @delta=0 BEGIN SET @Result=@Result+ N'Phương trình có nghiệm kép x ='+ Cast( ((-@b)/(2*@a)) AS nvarchar(300))+';' END IF @delta<0 SET @Result=@Result+ N'Phương trình vô nghiệm' END RETURN @Result END

Bạn chạy thử hàm trên với lệnh:

SELECT dbo.fuPhuongTrinhBac2 (1,4,-3) AS PTB2 --Phương trình có 2 nghiệm: x1=0.645751; x2=-4.64575 SELECT dbo.fuPhuongTrinhBac2 (1,2,-3) AS PTB2 -- Phương trình có 2 nghiệm: x1=1; x2=-3 SELECT dbo.fuPhuongTrinhBac2 (1,4,0) AS PTB2 -- Phương trình có 2 nghiệm: x1=0; x2=-4

ddc88e7e-5cd5-43ba-93b1-5521379af978|0|.0|27604f05-86ad-47ef-9e05-950bb762570c

Chuyên mục: Kiến thức

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button