From 30d599ca44ebec5ec1b8022edd6d4c6592c2cf2f Mon Sep 17 00:00:00 2001 From: 3013050 <3013050@stud.hs-mannheim.de> Date: Fri, 11 Oct 2024 01:54:22 +0200 Subject: [PATCH] Initial commit --- fakultaetsCalc.zig | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 fakultaetsCalc.zig diff --git a/fakultaetsCalc.zig b/fakultaetsCalc.zig new file mode 100644 index 0000000..8d6e69b --- /dev/null +++ b/fakultaetsCalc.zig @@ -0,0 +1,50 @@ +const std = @import("std"); + +pub fn main() !void { + const reader = std.io.getStdIn().reader(); + const writer = std.io.getStdOut().writer(); + + const userNumberInput: u128 = try getInputNumber(writer, reader); + + const calcedFact = try calcFact(userNumberInput); + + try writer.print("Calculated number: {d}\n", .{calcedFact}); +} + +pub fn getInputNumber(writer: anytype, reader: anytype) !u128 { + var buffer: [256]u8 = undefined; + + while (true) { + try writer.print("Enter a number \n", .{}); + try writer.print("> ", .{}); + const amountInputBytes = try reader.read(&buffer); + + const input_slice = buffer[0..(amountInputBytes - 1)]; + + const result = std.fmt.parseInt(u128, input_slice, 10) catch |err| { + switch (err) { + error.InvalidCharacter => { + try writer.print("Error: Invalid character in input.\n", .{}); + }, + error.Overflow => { + try writer.print("Error: Too large.\n", .{}); + }, + } + try writer.print("\n", .{}); + continue; + }; + return result; + } +} + +pub fn calcFact(maxNum: u128) !u128 { + if (maxNum == 0) { + return 1; + } + + const multValue: u128 = try calcFact(maxNum - 1); + return (maxNum * multValue); +} + +// Bei start wird Zufallszahl gewählen +// Nutzer sucht dann manuel mit binary search nach der zahl