Haskell 程序计算商和余数
在本教程中,我们将讨论编写一个程序来计算 Haskell 编程语言中的商和余数。
商和余数是两个数量相除的结果。
例如 - 31/5 的商和余数分别为 6 和 1。这个数字可以表示为 31(被除数)= 5(除数)* 6(商)+ 1(余数)。
在本教程中,我们将看到四种不同的方法来编写一个程序来计算商和余数。
使用内置函数div 和 mod 计算商和余数的 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"
在上面的程序中,我们声明并初始化了两个变量dividend 和 divisor。我们使用函数 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"
在上面的程序中,我们声明并初始化了两个变量dividend 和 divisor。我们使用除法运算符('/')计算了商。由于返回的数字可能是小数,因此我们使用函数 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 编程语言中实现一个计算商和余数的程序。