Exercise 3-8. Write a program that performs multiplication using the ImaginaryNumber struct defined in the text.
public class ImaginaryTest
{
public struct ImaginaryNumber
{
double real;
public double Real
{
get { return real; }
set { real = value; }
}
double i;
public double I
{
get { return i; }
set { i = value; }
}
}
public static ImaginaryNumber
multiplication (double d, ImaginaryNumber z)
{
ImaginaryNumber prod = new ImaginaryNumber();
prod.Real = d * z.Real;
prod.I = d * z.I;
return prod;
}
public static ImaginaryNumber
multiplication (ImaginaryNumber z1, ImaginaryNumber z2)
{
ImaginaryNumber prod = new ImaginaryNumber();
prod.Real = z1.Real * z2.Real - z1.I * z2.I;
prod.I = z1.Real * z2.I + z1.I * z2.Real;
return prod;
}
public static void Main()
{
ImaginaryNumber z = new ImaginaryNumber();
System.Console.WriteLine("z.Real: " + z.Real + ", z.I: " + z.I); // call get()
z.Real = 2.3; z.I = 3.2; // call set()
System.Console.WriteLine("z.Real: " + z.Real + ", z.I: " + z.I); // call get()
z= multiplication(2, z); // call static function from a static context, Main()
System.Console.WriteLine("z.Real: " + z.Real + ", z.I: " + z.I); // call get()
z.Real = 2; z.I = 3; // call set()
System.Console.WriteLine("z.Real: " + z.Real + ", z.I: " + z.I); // call get()
z = multiplication(z, z); // call static function from a static context, Main()
System.Console.WriteLine("z.Real: " + z.Real + ", z.I: " + z.I); // call get()
}
}
/*
mcs Imaginary.cs
mono Imaginary.exe
z.Real: 0, z.I: 0
z.Real: 2.3, z.I: 3.2
z.Real: 4.6, z.I: 6.4
z.Real: 2, z.I: 3
z.Real: -5, z.I: 12
*/