gpt4 book ai didi

haskell - 如何在一行上打印输出?

转载 作者:行者123 更新时间:2023-12-05 01:58:57 24 4
gpt4 key购买 nike

今天我正在研究这段输出一系列“数组”的平均值的代码,数据以这种格式输入:

3               #Number of arrays to get the average from
2 3 0 #First array
4 5 0 #Second array
1 4 5 0 #Third array

我编写了一个输出数据的代码,但意识到它是这样打印的:

2  #Average (Int) of the 1st array
4 #Average (Int) of the 2nd array
3 #Average (Int) of the 3rd array

(注意每个数组末尾的0在计算平均值时并没有用到,它的存在只是为了表示数组结束)

我的问题是,我怎样才能正确地更改我的代码,以便我可以像这样输出数据? :

2  4  3

这是我一直在使用的代码:

sumList :: [Int] -> Int sumList []    = 0 sumList (u:v) = u + sumList v

funavg :: Int -> IO () funavg numitint = if numitint==0 then return ()
else do
arrs <- getLine
let arrnum = (map read(words arrs) :: [Int])
let total = sumList arrnum
let avg = div total ((length arrnum)-1)
print avg
funavg (numitint - 1)

main :: Prelude.IO () main = do
numits <- getLine
let numitint = read numits :: Int
funavg numitint

我搜索了很多文档和网站,但找不到理想的答案。使用递归是强制性的。

非常感谢任何帮助 :D

最佳答案

print 等同于 putStrLn 。 show 并提供方便以打印任何 Show 类型的单个值。

print 没有省略换行符的标准库伴侣,但是 putStrLn 有:它叫做 putStr .代替 print avg,考虑

putStr $ show avg

关于haskell - 如何在一行上打印输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68138537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com