-
Notifications
You must be signed in to change notification settings - Fork 3
/
IO.hs
46 lines (35 loc) · 1.24 KB
/
IO.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
module IO where
findAverage :: IO Double
findAverage = do putStrLn "Моля, въведете брой числа:"
n <- getInt
s <- readAndSum n
return (fromIntegral s / fromIntegral n)
readAndSum :: Int -> IO Int
readAndSum 0 = return 0
readAndSum n = do x <- getInt
s <- readAndSum $ n - 1
return $ x + s
getInt :: IO Int
getInt = do line <- getLine
return $ read line
printRead :: String -> IO Int
printRead s = do putStr $ s ++ " = "
getInt
throwAwayResult :: IO a -> IO ()
throwAwayResult t = do t
return ()
forever :: IO a -> IO b
forever t = do t
forever t
readInt :: String -> IO Int
readInt s = do putStr $ "Моля, въведете " ++ s ++ ": "
getInt
findAveragev2 :: IO Double
findAveragev2 = do n <- readInt "брой"
l <- mapM (readInt.("число #"++).show) [1..n]
let s = sum l
return $ fromIntegral s / fromIntegral n
main = forever $
do avg <- findAveragev2
putStrLn $ "Средното аритметично е: " ++ show avg
putStrLn "Хайде отново!"