/* 
 * an implementation of a simple calculator
 * @author	Biagioni, Edoardo
 * @assignment	lecture 6
 * @date	January 30, 2008
 */

import java.lang.ArithmeticException;

public class Calculate {

    /* simple test code for arbitrary-precision arithmetic
     * @param	expression: two operands and an operator
     * @return	nothing
     * @throws  ArithmeticException when dividing by zero
     */
    public static void main(String[] parameters) {
	if (parameters.length == 3) {
	    ArbitraryPrecisionInterface x =
		new ArbitraryPrecision (parameters[0]);
	    ArbitraryPrecisionInterface y =
		new ArbitraryPrecision (parameters[2]);
	    ArbitraryPrecisionInterface result =
		new ArbitraryPrecision (); // zero
	    if (parameters[1].equals("+")) {
		if (parameters[2].equals("1")) {
		    result = x.oneMore();
		} else {
		    result = x.add(y);
		}
	    } else if (parameters[1].equals("-")) {
		if (parameters[2].equals("1")) {
		    result = x.oneLess();
		} else {
		    result = x.subtract(y);
		}
	    } else if (parameters[1].equals("*")) {
		if (parameters[2].equals("2")) {
		    result = x.twice();
		} else {
		    result = x.multiply(y);
		}
	    } else if (parameters[1].equals("/")) {
		if (parameters[2].equals("2")) {
		    result = x.half();
		} else {
		    result = x.divide(y);
		}
	    } else if (parameters[1].equals("%")) {
		result = x.modulo(y);
	    } else {
		System.out.println("unknown operator " + parameters[1]);
	    }
	    System.out.println(parameters[0] + " " +
			       parameters[1] + " " +
			       parameters[2] + " = " +
			       result);

	} else {
	    System.out.println("three arguments expected");
	}
    }

}