Haskell 程序读取坐标点并确定其象限

haskellserver side programmingprogramming更新于 2025/5/8 5:22:17

本教程将帮助我们读取 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 坐标并确定其象限。这些方法可以通过使用 quadrant 函数、atan2 函数或检查 x 和 y 坐标的符号来实现。


相关文章