diff options
Diffstat (limited to 'exercises/020_quiz3.zig')
-rw-r--r-- | exercises/020_quiz3.zig | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/exercises/020_quiz3.zig b/exercises/020_quiz3.zig new file mode 100644 index 0000000..651af8c --- /dev/null +++ b/exercises/020_quiz3.zig @@ -0,0 +1,43 @@ +// +// Let's see if we can make use of some of things we've learned so far. +// We'll create two functions: one that contains a "for" loop and one +// that contains a "while" loop. +// +// Both of these are simply labeled "loop" below. +// +const std = @import("std"); + +pub fn main() void { + const my_numbers = [4]u16{ 5, 6, 7, 8 }; + + printPowersOfTwo(my_numbers); + std.debug.print("\n", .{}); +} + +// You won't see this every day: a function that takes an array with +// exactly four u16 numbers. This is not how you would normally pass +// an array to a function. We'll learn about slices and pointers in +// a little while. For now, we're using what we know. +// +// This function prints, but does not return anything. +// +fn printPowersOfTwo(numbers: [4]u16) ??? { + loop (numbers) |n| { + std.debug.print("{} ", .{twoToThe(n)}); + } +} + +// This function bears a striking resemblance to twoToThe() in the last +// exercise. But don't be fooled! This one does the math without the aid +// of the standard library! +// +fn twoToThe(number: u16) ??? { + var n: u16 = 0; + var total: u16 = 1; + + loop (n < number) : (n += 1) { + total *= 2; + } + + return ???; +} |