// Project 5. Question 5. Solution // Cafeteria cleanup simulation (using arrays) // Date: 25 March 2001 // Author: Rimon Barr class Complex { // input stream private static TokenReader in=new TokenReader(System.in); // limits on constructor that creates random complex numbers private static final int RAND_MIN=-9, RAND_MAX=9; private int real, imaginary; // construct a random complex number public Complex() { real=(int)(Math.random()*(RAND_MAX-RAND_MIN+1)+RAND_MIN); imaginary=(int)(Math.random()*(RAND_MAX-RAND_MIN+1)+RAND_MIN); } // construct a complex number with given real and imaginary components public Complex(int real, int imaginary) { this.real=real; this.imaginary=imaginary; } // return string representation of this complex number public String toString() { String sReal="", sImaginary="", s=""; if(real!=0) sReal=""+real; if(imaginary!=0) sImaginary=imaginary+"i"; if(real!=0 && imaginary>0) s=sReal+"+"+sImaginary; else s=sReal+sImaginary; if(s.equals("")) s="0"; return s; } // return real component public int getReal() { return real; } // return imaginary component public int getImaginary() { return imaginary; } // add given complex number to this one public Complex add(Complex c) { this.real+=c.getReal(); this.imaginary+=c.getImaginary(); return this; } /* * Static methods for demonstration purposes. */ // generate a column-major ragged upper triangular array of random // complex numbers public static Complex[][] generateArray(int size) { Complex[][] array=new Complex[size][]; for(int col=0; col