fork(1) download
  1. module Main where
  2.  
  3. data Tochka a = Tochka a a
  4.  
  5. instance (Show a) => Show (Tochka a) where
  6. show (Tochka x y) = "pri x = " ++ show x ++ "\ty = " ++ show y
  7.  
  8. okrujnost r x0 y0 = \x -> sqrt (r ** 2 - (x - x0) ** 2) - y0
  9. liniya k x0 y0 = \x -> k * (x - x0) + y0
  10.  
  11. kusok0 = const $ const 0
  12. kusok1 r = negate . okrujnost r ((-2) * r) 0
  13. kusok2 r = liniya 1 (-r) 0
  14. kusok3 r = okrujnost r 0 0
  15. kusok4 r = liniya (-1) 0 r
  16. kusok5 r = liniya (3 / 6) r 0
  17.  
  18. funkciya r x = Tochka x (y r x) where
  19. y | x < (-3) * r = kusok0
  20. | x < (-2) * r = kusok1
  21. | x < (-r) = kusok2
  22. | x < 0 = kusok3
  23. | x < r = kusok4
  24. | otherwise = kusok5
  25.  
  26. sprositPro x = do
  27. putStrLn $ "Vvedite " ++ x ++ ":"
  28.  
  29. napechatatOtvet r = putStrLn . (("Otvet na zadachu: dlya R = " ++ show r ++ "\t") ++) . show
  30.  
  31. main = do
  32. putStrLn "Laba 1"
  33. r <- sprositPro "R"
  34. x <- sprositPro "x"
  35. let resultat = funkciya r x
  36. napechatatOtvet r resultat
Success #stdin #stdout 0s 0KB
stdin
3
-0.5
stdout
Laba 1
Vvedite R:
Vvedite x:
Otvet na zadachu: dlya R = 3.0	pri x = -0.5	y = 2.958039891549808