aboutsummaryrefslogtreecommitdiff
path: root/20_quiz3.zig
diff options
context:
space:
mode:
authorDave Gauer <dave@ratfactor.com>2021-01-22 17:42:03 -0500
committerDave Gauer <dave@ratfactor.com>2021-01-22 17:42:03 -0500
commit08ec029f20381580ebe76ad8bd3feca2e5cd262a (patch)
tree818a56fd583bab292fc61c5203762ec56a31f208 /20_quiz3.zig
parenta361b90a7562bcc5a62f863b42ae6a33aaa4b812 (diff)
downloadziglings-08ec029f20381580ebe76ad8bd3feca2e5cd262a.tar.gz
ziglings-08ec029f20381580ebe76ad8bd3feca2e5cd262a.tar.bz2
ziglings-08ec029f20381580ebe76ad8bd3feca2e5cd262a.tar.xz
ziglings-08ec029f20381580ebe76ad8bd3feca2e5cd262a.zip
Added ex 19,20 functions and pop quiz
Diffstat (limited to '20_quiz3.zig')
-rw-r--r--20_quiz3.zig45
1 files changed, 45 insertions, 0 deletions
diff --git a/20_quiz3.zig b/20_quiz3.zig
new file mode 100644
index 0000000..e18ef37
--- /dev/null
+++ b/20_quiz3.zig
@@ -0,0 +1,45 @@
+//
+// 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 ???;
+}