PR3-Klausur-Uben/ZIG/u2Vector.zig

74 lines
1.9 KiB
Zig

const std = @import("std");
const complexNumber = struct {
real: i32,
img: i32,
};
pub fn add(num1: *complexNumber, num2: complexNumber) void {
num1.real = num1.real + num2.real;
num1.img = num1.img + num2.img;
}
pub fn sub(num1: *complexNumber, num2: complexNumber) void {
num1.real = num1.real - num2.real;
num1.img = num1.img - num2.img;
}
pub fn mul(num1: *complexNumber, num2: complexNumber) void {
num1.real = (num1.real * num2.real) - (num1.img * num2.img);
num1.img = (num1.real * num2.img) + (num1.img * num2.real);
}
pub fn print(writer: anytype, num: complexNumber) !void {
try writer.print("({d} + {d}i)", .{num.real, num.img});
}
pub fn main() !void {
const writer = std.io.getStdOut().writer();
// Add
var num1: complexNumber = complexNumber{.real = 1, .img = 2};
const num2: complexNumber = complexNumber{.real = 2, .img = 3};
try writer.print("Add: \n", .{});
try print(writer, num1);
try writer.print(" + ", .{});
try print(writer, num2);
try writer.print(" = ", .{});
add(&num1, num2);
try print(writer, num1);
try writer.print("\n", .{});
// Sub
var num3: complexNumber = complexNumber{.real = 4, .img = 6};
const num4: complexNumber = complexNumber{.real = 2, .img = 4};
try writer.print("Sub: \n", .{});
try print(writer, num3);
try writer.print(" - ", .{});
try print(writer, num4);
try writer.print(" = ", .{});
sub(&num3, num4);
try print(writer, num3);
try writer.print("\n", .{});
// Mul
var num5: complexNumber = complexNumber{.real = 2, .img = 3};
const num6: complexNumber = complexNumber{.real = 4, .img = 5};
try writer.print("Mul: \n", .{});
try print(writer, num5);
try writer.print(" * ", .{});
try print(writer, num6);
try writer.print(" = ", .{});
mul(&num5, num6);
try print(writer, num5);
try writer.print("\n", .{});
}