Haskell 程序计算商和余数


在本教程中,我们将讨论编写一个程序来计算 Haskell 编程语言中的商和余数。

商和余数是两个数量相除的结果。

例如 - 31/5 的商和余数分别为 6 和 1。这个数字可以表示为 31(被除数)= 5(除数)* 6(商)+ 1(余数)。

在本教程中,我们将看到四种不同的方法来编写一个程序来计算商和余数。

  • 使用内置函数divmod 计算商和余数的 Haskell 程序

  • 使用内置运算符计算商和余数的 Haskell 程序。

  • 使用递归函数计算余数的 Haskell 程序。

  • 使用递归函数计算商的 Haskell 程序。

算法步骤

  • 初始化或输入被除数和除数。

  • 实现计算商和余数的逻辑。

  • 打印或显示计算结果。

示例 1

使用内置函数计算商和余数的 Haskell 程序。

main :: IO() main = do -- declaring and initializing operand variables let dividend = 31 let divisor = 5 print ("Entered Dividend and Divisor are:") print (show dividend ++"and"++ show divisor) -- computing quotient using function div and loading into a variable let quotient = div dividend divisor -- computing remainder using funcion mod and loading into a variable let remainder = mod dividend divisor -- printing the quotient and remainder print ("So the Quotient and Remainder are:") print (show quotient ++"and"++ show remainder)

输出

"Entered Dividend and Divisor are:"
"31and5"
"So the Quotient and Remainder are:"
"6and1"

在上面的程序中,我们声明并初始化了两个变量dividenddivisor。我们使用函数 div 计算了商,该函数接受两个参数并返回计算出的除法的商。我们使用函数 mod 计算了余数,该函数接受两个参数并返回计算出的除法的余数。最后,我们使用 print 函数打印了商和余数。注意:show 是一个函数,它以数字作为参数,将其解析为字符串,并返回字符串。“++” 是连接两个字符串的运算符。

示例 2

使用运算符计算商和余数的 Haskell 程序

main :: IO() main = do -- declaring and initializing operand variables let dividend = 31 let divisor = 5 print ("Entered Dividend and Divisor are:") print (show dividend ++"and"++ show divisor) -- computing quotient using division operator let quotient = floor (dividend / divisor) -- computing remainder let remainder = (round dividend) - (round divisor)*quotient -- printing the quotient and remainder print ("So the Quotient and Remainder are:") print (show quotient ++"and"++ show remainder)

输出

"Entered Dividend and Divisor are:"
"31.0 and 5.0"
"So the Quotient and Remainder are:"
"6 and 1"

在上面的程序中,我们声明并初始化了两个变量dividenddivisor。我们使用除法运算符('/')计算了商。由于返回的数字可能是小数,因此我们使用函数 floor 来提取小于该数字的最大整数,它是除法的商。floor 是一个函数,它接受一个数字并返回小于或等于该数字的最大整数。当我们使用 let 关键字初始化数字时,数字将存储为浮点数。因此,函数round 用于将浮点数类型转换为整数类型。我们通过从被除数中减去除数*商来计算余数。最后,我们打印了商和余数。

示例 3

使用递归函数计算余数的 Haskell 程序

-- function declaration remainder :: Int->Int->Int -- function definition remainder dividend divisor = if divisor >= dividend then dividend else remainder (dividend-divisor) divisor main :: IO () main = do -- declaring and initializing operand variables let dividend = 31 let divisor = 5 -- invoking remainder function and printing result print ("The remainder is:") print (remainder dividend divisor)

输出

"The remainder is:"
1

在上面的程序中,我们声明了一个名为 remainder 的函数,它接受两个整数参数并返回一个整数。在其函数定义中,我们接受两个参数被除数和除数。如果被除数大于除数,则使用参数(被除数-除数)和除数对其自身进行递归调用。否则返回被除数。返回的被除数是余数。在主函数中,我们调用此函数,并打印返回的余数。

示例 4

使用递归函数计算商的 Haskell 程序

-- function declaration quotient :: Int->Int->Int->Int -- function definition quotient dividend divisor cnt = if divisor >= dividend then cnt else quotient (dividend-divisor) divisor cnt+1 main :: IO () main = do -- declaring and initializing operand variables let dividend = 31 let divisor = 5 -- invoking quotient function and printing result print ("The quotient is:") print (quotient dividend divisor 0)

输出

"The quotient is:"
6

在上面的程序中,声明了函数 quotient,它接受三个整数参数并返回一个整数。在其函数定义中,接受三个参数被除数、除数和 cnt。如果被除数大于除数,则使用参数(被除数-除数)、除数和(cnt+1)对其自身进行递归调用。否则返回 cnt 值。该函数返回除数可以从被除数中减去多少次,即商。在主函数中,我们使用被除数、除数和初始计数 0 调用了 quotient 函数。最后,我们打印了返回的结果。

结论

在本教程中,我们讨论了在 Haskell 编程语言中实现一个计算商和余数的程序。

更新于: 2022-11-24

596 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告