{\rtf1\ansi\ansicpg1252\deff0 {\fonttbl {\f0\fnil\fcharset0\fprq0\fttruetype Times New Roman;} {\f1\fnil\fcharset0\fprq0\fttruetype Courier New;} {\f2\fnil\fcharset0\fprq0\fttruetype Arial;} {\f3\fnil\fcharset0\fprq0\fttruetype Dingbats;} {\f4\fnil\fcharset0\fprq0\fttruetype Symbol;}} {\colortbl \red0\green0\blue0; \red255\green255\blue255;} {\stylesheet {\s1\fi-431\li720\sbasedon28\snext28Contents 1;} {\s2\fi-431\li1440\sbasedon28\snext28Contents 2;} {\s3\fi-431\li2160\sbasedon28\snext28Contents 3;} {\s8\fi-431\li720\sbasedon28Lower Roman List;} {\s5\tx431\sbasedon24\snext28Numbered Heading 1;} {\s6\tx431\sbasedon25\snext28Numbered Heading 2;} {\s7\fi-431\li720Square List;} {\*\cs11\sbasedon28Endnote Text;} {\s4\fi-431\li2880\sbasedon28\snext28Contents 4;} {\s9\fi-431\li720Diamond List;} {\s10\fi-431\li720Numbered List;} {\*\cs12\fs20\superEndnote Reference;} {\s13\fi-431\li720Triangle List;} {\s14\tx431\sbasedon26\snext28Numbered Heading 3;} {\s15\fi-431\li720Dashed List;} {\s16\fi-431\li720\sbasedon10Upper Roman List;} {\s17\sb440\sa60\f2\fs24\b\sbasedon28\snext28Heading 4;} {\s18\fi-431\li720Heart List;} {\s34\fi-431\li720Box List;} {\s20\fi-431\li720\sbasedon10Upper Case List;} {\s21\fi-431\li720Bullet List;} {\s22\fi-431\li720Hand List;} {\*\cs23\fs20\sbasedon28Footnote Text;} {\s24\sb440\sa60\f2\fs34\b\sbasedon28\snext28Heading 1;} {\s25\sb440\sa60\f2\fs28\b\sbasedon28\snext28Heading 2;} {\s19\qc\sb240\sa120\f2\fs32\b\sbasedon28\snext28Contents Header;} {\s27\fi-431\li720Tick List;} {\s26\sb440\sa60\f2\fs24\b\sbasedon28\snext28Heading 3;} {\s29\fi-431\li720\sbasedon10Lower Case List;} {\s30\li1440\ri1440\sa120\sbasedon28Block Text;} {\s36\f1\sbasedon28Plain Text;} {\s32\tx1584\sbasedon5\snext28Section Heading;} {\s33\fi-431\li720Implies List;} {\s28\f0\fs24\lang1033Normal;} {\s35\fi-431\li720Star List;} {\*\cs31\fs20\superFootnote Reference;} {\s37\tx1584\sbasedon5\snext28Chapter Heading;}} \kerning0\cf0\ftnbj\fet2\ftnstart1\ftnnar\aftnnar\ftnstart1\aftnstart1\aenddoc\revprop3{\info\uc1}\deftab720\viewkind1\paperw12240\paperh15840\margl1440\margr1440\widowctrl \sectd\sbknone\colsx360\pgncont\ltrsect \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\abinodiroverride\ltrch Program Output:}{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch josh@morpheus [~/cs621/proj2] Sat Mar 01 09:26:23 (0)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch 21 $ java MyApp}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Enter rational RPN expression (enter empty line to quit):}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch 65/130 65/130 +}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Result is: 1}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Enter rational RPN expression (enter empty line to quit):}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch 11/23 5/7 +}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Result is: 192/161}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Enter rational RPN expression (enter empty line to quit):}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch 3/8 3/4 *}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Result is: 9/32}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Enter rational RPN expression (enter empty line to quit):}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch 18/20 9/10 -}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Result is: 0}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Enter rational RPN expression (enter empty line to quit):}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch 1 5 + 8 4 1 - - *}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Result is: 30}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Enter rational RPN expression (enter empty line to quit):}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch 9/16 3 \\ 1 +}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Result is: 19/16}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Enter rational RPN expression (enter empty line to quit):}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch 9 8 7 6 5 4 3 2 1 - - - - - - - -}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Result is: 5}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Enter rational RPN expression (enter empty line to quit):}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch 987/9870}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Result is: 1/10}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Enter rational RPN expression (enter empty line to quit):}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\abinodiroverride\ltrch MyApp.java:}{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch import java.io.BufferedReader;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch import java.io.InputStreamReader;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * MyApp is the driver class for Calculator}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public class MyApp}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * main is the entry point of the program}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public static void main (String args[])}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch BufferedReader in = new BufferedReader(new InputStreamReader(System.in));}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Calculator myCalc = new Calculator();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /* loop reading input lines until the user is finished */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch for (;;)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch System.out.println("Enter rational RPN expression (enter empty line to quit):");}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch String line;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch try}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch line = in.readLine();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch catch (Exception e)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch System.out.println("Problem reading a line!");}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch if (line.equals(""))}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch break;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch myCalc.run(line);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\abinodiroverride\ltrch Calculator.java:}{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch import java.util.StringTokenizer;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * Calculator implements a RPN calculator that can act on rational values}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public class Calculator}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch private RationalStack stack = new RationalStack();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * pushOperand adds the given token to the top of the RationalStack object}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param val the token to add}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch private void pushOperand(String val)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch StringTokenizer tokens = new StringTokenizer(val, "/");}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch if (tokens.hasMoreElements())}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch int num = Integer.parseInt(tokens.nextToken());}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch int denom = 1;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch if (tokens.hasMoreElements())}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch denom = Integer.parseInt(tokens.nextToken());}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch stack.push(new Rational(num, denom));}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * doOperator performs the action specified by op on the top two elements}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * of the RationalStack object}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param op the operator to perform}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch private void doOperator(String op)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch if (stack.size() < 2)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Rational two = stack.pop();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Rational one = stack.pop();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Rational result = new Rational();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch if (op.equals("+"))}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch result = one.add(two);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch else if (op.equals("-"))}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch result = one.subtract(two);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch else if (op.equals("*"))}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch result = one.multiply(two);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch else if (op.equals("\\\\"))}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch result = one.divide(two);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch stack.push(result);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * run will evaluate the RPN expression and print its result}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param expression the expression to evaluate}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public void run(String expression)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch StringTokenizer tokens = new StringTokenizer(expression, " ");}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch while (tokens.hasMoreTokens())}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch String item = tokens.nextToken();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch if (item.equals("+") || item.equals("-") ||}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch item.equals("*") || item.equals("\\\\"))}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch doOperator(item);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch else}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch pushOperand(item);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch }{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch if (stack.size() != 1)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch System.out.println("Warning: malformed expression");}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch if (!stack.isEmpty())}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch System.out.println("Result is: " + stack.pop());}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\abinodiroverride\ltrch Rational.java:}{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * Rational is a class which can store a rational number of the form n/d}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * where n and d are integers, n is the numerator, and d is the denominator}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public class Rational}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch private int _numerator;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch private int _denominator;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * This default constructor creates a Rational with value 0}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public Rational()}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch this(0, 1);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * This constructor creates a Rational with value numerator/denominator}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param numerator the numerator of the Rational}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param denominator the denominator of the Rational}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public Rational(int numerator, int denominator)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _numerator = numerator;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _denominator = denominator;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch reduce();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * add adds this Rational to another}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param other the Rational to add to this one}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return the result of the addition}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public Rational add(Rational other)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return new Rational(_numerator * other._denominator +}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch other._numerator * _denominator,}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _denominator * other._denominator);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * subtract subtracts another Rational from this one}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param other the other Rational to subtract from this one}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return the result of the subtraction}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public Rational subtract(Rational other)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return new Rational(_numerator * other._denominator -}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch other._numerator * _denominator,}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _denominator * other._denominator);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * multiply multiplies this Rational with another}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param other the other Rational to multiply with this one}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return the result of the multiplication}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public Rational multiply(Rational other)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return new Rational(_numerator * other._numerator,}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _denominator * other._denominator);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * divide divides another Rational into this one}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param other the other Rational to divide into this one}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return the result of the division}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public Rational divide(Rational other)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return new Rational(_numerator * other._denominator,}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _denominator * other._numerator);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * gcd calculates the greatest common divisor between the}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * numerator and the denominator}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return the greatest common divisor}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch private int gcd()}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch int m = _numerator;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch int n = _denominator;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch int r;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch while (n != 0)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch r = m % n;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch m = n;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch n = r;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return m;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * reduce reduces the Rational to simplest terms using the gcd}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return itself}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public Rational reduce()}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch int thegcd = gcd();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _numerator = _numerator / thegcd;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _denominator = _denominator / thegcd;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return this;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch }{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * toString returns a string representation of the Rational in n/m form}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return a string representation of the Rational in n/m form}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public String toString()}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return _numerator + (_denominator == 1 ? "" : "/" + _denominator);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\abinodiroverride\ltrch RationalStack.java:}{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch import java.util.Vector;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * RationalStack provides a stack collection of Rational objects}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public class RationalStack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch private Vector _data = new Vector();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * pop will remove and return the Rational object from the top of the stack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return the Rational at the top of the stack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public Rational pop()}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch int sz = _data.size();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch if (sz > 0)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch Rational r = _data.remove(sz-1);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return r;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return null;}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * push will add a new Rational object to the top of the stack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @param value the Rational object to add to the stack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public void push(Rational value)}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _data.add(value);}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * isEmpty will return true if there are no Rational elements on the stack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return true if there are no Rational elements on the stack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public boolean isEmpty()}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return _data.isEmpty();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * clear will remove all Rational objects from the stack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public void clear()}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch _data.clear();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch /**}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * size returns the number of Rational objects in the stack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch * @return the number of Rational objects in the stack}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch */}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch public int size()}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \{}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch return _data.size();}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \}}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\abinodiroverride\ltrch Makefile:}{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch all:}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \tab javac *.java}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch .PHONY: javadoc}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch javadoc:}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \tab -mkdir doc}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \tab javadoc -d doc *.java}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch clean:}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \tab -rm -f *.class}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f1\fs18\lang1033{\*\listtag0}\abinodiroverride\ltrch \tab -rm -rf doc}{\s28\f1\fs18\lang1033{\*\listtag0}\par} \pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par}}