diff --git a/lab 5/NumberTraversal/NumberTraversal.fsproj b/lab 5/NumberTraversal/NumberTraversal.fsproj new file mode 100755 index 0000000..299cf40 --- /dev/null +++ b/lab 5/NumberTraversal/NumberTraversal.fsproj @@ -0,0 +1,12 @@ + + + + Exe + net7.0 + + + + + + + diff --git a/lab 5/NumberTraversal/Program.fs b/lab 5/NumberTraversal/Program.fs new file mode 100755 index 0000000..2cba6bd --- /dev/null +++ b/lab 5/NumberTraversal/Program.fs @@ -0,0 +1,33 @@ +// For more information see https://aka.ms/fsharp-console-apps +printfn "Hello from F#" + +let rec traverseNumber' n f acc = + match n with + | 0 -> acc + | n -> traverseNumber' (n / 10) f (f acc (n % 10)) + +let traverseNumber n f init = traverseNumber' n f init + +let sum x y = x + y +let mul x y = x * y +let min x y = if x < y then x else y +let max x y = if x > y then x else y + +[] +let main argv = + System.Console.WriteLine("Введите число:") + let number = System.Console.ReadLine() |> int + + let sumResult = traverseNumber number sum 0 + System.Console.WriteLine($"Сумма цифр: {sumResult}") + + let mulResult = traverseNumber number mul 1 + System.Console.WriteLine($"Произведение цифр: {mulResult}") + + let minResult = traverseNumber number min System.Int32.MaxValue + System.Console.WriteLine($"Минимальная цифра: {minResult}") + + let maxResult = traverseNumber number max 0 + System.Console.WriteLine($"Максимальная цифра: {maxResult}") + + 0