From abbee11d72218f6b7b4850d78d685c3ad4ecdc88 Mon Sep 17 00:00:00 2001 From: arfy slowy Date: Sun, 10 Dec 2023 12:18:58 +0700 Subject: [PATCH] feat: menambahkan contoh math ceil pada zig (#11) Signed-off-by: slowy07 --- build.zig | 8 ++++++++ math/ceil.zig | 23 +++++++++++++++++++++++ runtest.sh | 1 + 3 files changed, 32 insertions(+) create mode 100644 math/ceil.zig diff --git a/build.zig b/build.zig index 87d04bb..4f685ca 100644 --- a/build.zig +++ b/build.zig @@ -28,6 +28,14 @@ pub fn build(b: *std.Build) void { .category = "math", }); + if (std.mem.eql(u8, op, "math/ceil")) + buat_algo(b, .{ + .optimize = optimize, + .target = target, + .name = "ceil.zig", + .category = "math", + }); + // algoritma/sorting // bubble sorting if (std.mem.eql(u8, op, "algorithm/sorting/bubbleSort")) diff --git a/math/ceil.zig b/math/ceil.zig new file mode 100644 index 0000000..b3909ec --- /dev/null +++ b/math/ceil.zig @@ -0,0 +1,23 @@ +const std = @import("std"); + +// fungsi ceil untuk mengembalikan nilai ceil dari suatu angka +pub fn ceil(comptime T: type, x: T) T { + // simpan nilai x yang dibulatkan ke nol untuk memeriksa kondisi pembulatan + // ke atas + const x_bulat_ke_nol = x; + + // jika x kurang dari 0 atau x dusah bulat ke 0, kembalikan x yang sudah bulat ke 0 + if (x < 0 or x_bulat_ke_nol == x) { + return x_bulat_ke_nol; + } else { + // jika x positif dan belum bulat ke nol, kembalikan x yang sudah bulat ke nol ditambah 1 + return x_bulat_ke_nol + @as(T, 1); + } +} + +// testing untuk fungsi ceil berfungsi dengan benar +test "testing ceil" { + try std.testing.expectEqual(@as(u4, 9), ceil(u4, 9)); + try std.testing.expectEqual(@as(f80, 3263.56), ceil(f80, 3263.56)); + try std.testing.expectEqual(@as(u5, 7), ceil(u5, 7)); +} diff --git a/runtest.sh b/runtest.sh index 4e511fe..a11da1a 100644 --- a/runtest.sh +++ b/runtest.sh @@ -19,4 +19,5 @@ argumen='--summary all -freference-trace' # yang sudah dibuat $ZIG_TEST_COMMAND -Dalgoritma=math/gcd $argumen $ZIG_TEST_COMMAND -Dalgoritma=math/faktorial $argumen +$ZIG_TEST_COMMAND -Dalgoritma=math/ceil $argumen $ZIG_TEST_COMMAND -Dalgoritma=algorithm/sorting/bubbleSort $argumen