Haskell程式讀取座標點並確定其象限


本教程將幫助我們讀取x和y座標並確定其象限。如果兩個座標都為正,則點位於第一象限;如果x座標為正且y座標為負,則點位於第四象限;如果x座標為負且y座標為正,則點位於第二象限;如果兩個座標都為負,則點位於第三象限。

演算法

  • 步驟1 − 使用x和y座標上的某些條件定義象限函式。

  • 步驟2 − 程式執行將從主函式開始。main()函式控制整個程式。

  • 步驟3 − 初始化名為“x”和“y”的變數。它將包含要確定其象限的座標值。

  • 步驟4 − 使用'putStrLn'語句顯示最終的象限結果。

使用使用者自定義函式

在此示例中,我們建立一個名為quadrant的函式,該函式將x和y座標的元組作為輸入,並返回一個字串,指示點位於哪個象限。

示例1

quadrant :: (Float, Float) -> String
quadrant (x, y)
   | x > 0 && y > 0 = "First Quadrant"
   | x < 0 && y > 0 = "Second Quadrant"
   | x < 0 && y < 0 = "Third Quadrant"
   | x > 0 && y < 0 = "Fourth Quadrant"
   | x == 0 || y == 0 = "On the Axis"

main = do
   let x = -2
   let y = 4
   putStrLn $ "Point lies in " ++ quadrant (x, y)

輸出

Point lies in Second Quadrant

使用atan2函式

在此示例中,我們使用atan2函式計算正x軸與連線點到原點的直線之間的弧度角。使用此角度,我們可以確定點位於哪個象限。

示例2

quadrant :: (Float, Float) -> String
quadrant (x, y)
   | angle > 0 && angle < pi/2 = "First Quadrant"
   | angle > pi/2 && angle < pi = "Second Quadrant"
   | angle > pi && angle < 3*pi/2 = "Third Quadrant"
   | angle > 3*pi/2 && angle < 2*pi = "Fourth Quadrant"
   | x == 0 && y == 0 = "Origin"
   | x == 0 || y == 0 = "On the Axis"
   where angle = atan2 y x
main = do
   let x = 3
   let y = 2
   putStrLn $ "Point lies in " ++ quadrant (x, y)

輸出

Point lies in First Quadrant

使用x和y座標的符號

在此示例中,它檢查x和y座標的符號,並據此確定點所在的象限。它還處理點位於x軸或y軸或原點的情況。

示例3

quadrant :: (Float, Float) -> String
quadrant (x, y)
   | x > 0 && y > 0 = "First Quadrant"
   | x < 0 && y > 0 = "Second Quadrant"
   | x < 0 && y < 0 = "Third Quadrant"
   | x > 0 && y < 0 = "Fourth Quadrant"
   | x == 0 && y == 0 = "Origin"
   | x == 0 = "On the x-axis"
   | y == 0 = "On the y-axis"

main = do
   let x = -7
   let y = -5
   putStrLn $ "Point lies in " ++ quadrant (x, y)

輸出

Point lies in Third Quadrant

結論

在Haskell中,有多種方法可以讀取x和y座標並確定其象限。這些方法可以透過使用象限函式、atan2函式或透過檢查x和y座標的符號來實現。

更新於: 2023年1月23日

188次檢視

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告