here is the driver:
import javax.swing.*;
import java.util.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.String.*;
public class testRational extends Rational{
public static void main(String[] args){
String input2 = "", input = "", temp = "";
int num1 = 0, den1 = 0, den2 = 0, num2 = 0, counter = 0, input3 = 0;
int[] array = new int[4];
String[] inArr = null;
while(input.compareTo("ZZ") != 0){
input = JOptionPane.showInputDialog("What would you like to do?:\n\n\nA. Input from file\nB. Or input from Keyboard \n\n\n(ZZ. to exit)");
input = input.toUpperCase();
if(input.compareTo("A") == 0){
input2 = JOptionPane.showInputDialog("Please enter the file you would like to use for input,\n including the directory and the .txt file extension:\n");
try{
BufferedReader in = new BufferedReader(new FileReader(input));
String inputLine = null;
while ((inputLine = in.readLine())!=null)
{
inArr = inputLine.split(",");
for(int i = 0; i <inArr.length; i++){
System.out.println(inArr[i]);
}
// StringTokenizer tok = new StringTokenizer(inputLine);
// tok.nextToken();
// temp = tok.nextToken();
// num1 = Integer.parseInt(temp.trim());
// tok.nextToken();
// temp = tok.nextToken();
// den1 = Integer.parseInt(temp.trim());
// tok.nextToken();
// tok.nextToken();
// temp = tok.nextToken();
// num2 = Integer.parseInt(temp.trim());
// tok.nextToken();
// temp = tok.nextToken();
// den2 = Integer.parseInt(temp.trim());
// tok.nextToken();
//
// array[0] = num1;
// array[1] = den1;
// array[2] = num2;
// array[3] = den2;
}
}
catch(IOException e){
}
input = JOptionPane.showInputDialog("What would you like to do?:\n\n\nA. Input from file\nB. Or input from Keyboard \nC. Add 2 Rationals (From Keyboard input)\nD. Add 2 Rationals at a time from the array(From File input)\nE. Sub 2 Rationals (From Keyboard input) \nF. Sub 2 Rationals at a time from the array(From File input) \nG. Mul 2 Rationals (From Keyboard input) \nH. Mul 2 Rationals at a time from the array(From File input)\nI. Div 2 Rationals (From Keyboard input)\nJ. Div 2 Rationals at a time from the array(From File input)\n\n(ZZ. to exit)");
input = input.toUpperCase();
if((input.compareTo("D"))==0){
}
if((input.compareTo("F"))==0){
}
if((input.compareTo("H"))==0){
}
}
if(input.compareTo("B") == 0){
for(int i = 0; i < array.length; i++){
input3 = Integer.parseInt(JOptionPane.showInputDialog("Please enter a(n) fraction on integer at a time" ));
array[i] = input3;
}
input = JOptionPane.showInputDialog("What would you like to do?:\n\n\n C. Add 2 Rationals (From Keyboard input)\nE. Sub 2 Rationals (From Keyboard input) \nG. Mul 2 Rationals (From Keyboard input) \nI. Div 2 Rationals (From Keyboard input)\n\n(ZZ. to exit)");
input = input.toUpperCase();
if((input.compareTo("C"))==0){
add(array[0], array[1], array[2], array[3]);
}
if((input.compareTo("E"))==0){
subtract(array[0], array[1], array[2], array[3]);
}
if((input.compareTo("G"))==0){
multiply(array[0], array[1], array[2], array[3]);
}
if((input.compareTo("I"))==0){
divide(array[0], array[1], array[2], array[3]);
}
}
}
}
}
here is the skeleton program:
//********************************************************************
// Rational.java
//
// Represents one rational number with a numerator and denominator.
//********************************************************************
public class Rational
{
private static int numerator, denominator, temp;
public Rational()
{
numerator = 0;
denominator = 0;
}
//-----------------------------------------------------------------
// Sets up the rational number by ensuring a nonzero denominator
// and making only the numerator signed.
//-----------------------------------------------------------------
public Rational(int newNum, int newDen)
{
numerator = newNum;
denominator = newDen;
}
//-----------------------------------------------------------------
// Returns the numerator of this rational number.
//-----------------------------------------------------------------
public int getNumerator ()
{
return numerator;
}
//-----------------------------------------------------------------
// Returns the denominator of this rational number.
//-----------------------------------------------------------------
public int getDenominator ()
{
return denominator;
}
//-----------------------------------------------------------------
// Returns the reciprocal of this rational number.
//-----------------------------------------------------------------
public Rational reciprocal (int n, int d)
{
temp = n;
n = d;
d = temp;
return reciprocal(n, d);
}
//-----------------------------------------------------------------
// Adds this rational number to the one passed as a parameter.
// A common denominator is found by multiplying the individual
// denominators.
//-----------------------------------------------------------------
public Rational add(Rational op2)
{
int num2;
int den2;
int currentNum;
int currentDen;
num2=op2.getNumerator();
den2=op2.getDenominator();
currentNum = getNumerator();
currentDen = getDenominator();
currentNum *= den2;
currentDen *= den2;
num2 *= denominator;
currentNum += num2;
Rational ration = new Rational(currentNum, currentDen);
return ration;
}
//-----------------------------------------------------------------
// Adds this rational number to the integer passed as a parameter.
//-----------------------------------------------------------------
public Rational add(int a)
{
int num2;
int den2;
int currentNum;
int currentDen;
num2=a;
den2=1;
currentNum = getNumerator();
currentDen = getDenominator();
currentNum *= den2;
currentDen *= den2;
num2 *= denominator;
currentNum += num2;
Rational ration = new Rational(currentNum, currentDen);
return ration;
}
//-----------------------------------------------------------------
// Subtracts the rational number passed as a parameter from this
// rational number.
//-----------------------------------------------------------------
public Rational subtract (Rational op2)
{
int num2;
int den2;
int currentNum;
int currentDen;
num2=op2.getNumerator();
den2=op2.getDenominator();
currentNum = getNumerator();
currentDen = getDenominator();
currentNum *= den2;
currentDen *= den2;
num2 *= denominator;
currentNum -= num2;
Rational ration = new Rational(currentNum, currentDen);
return ration;
}
//-----------------------------------------------------------------
// Multiplies this rational number by the one passed as a
// parameter.
//-----------------------------------------------------------------
public Rational multiply (Rational op2)
{
int num2;
int den2;
int currentNum;
int currentDen;
num2=op2.getNumerator();
den2=op2.getDenominator();
currentNum = getNumerator();
currentDen = getDenominator();
currentNum *= num2;
currentDen *= den2;
Rational ration = new Rational(currentNum, currentDen);
return ration;
}
//-----------------------------------------------------------------
// Divides this rational number by the one passed as a parameter
// by multiplying by the reciprocal of the second rational.
//-----------------------------------------------------------------
public Rational divide (Rational op2)
{
int num2;
int den2;
int currentNum;
int currentDen;
num2=op2.getNumerator();
den2=op2.getDenominator();
currentNum = getDenominator();
currentDen = getNumerator();
currentNum *= num2;
currentDen *= den2;
Rational ration = new Rational(currentNum, currentDen);
return ration;
}
//-----------------------------------------------------------------
// Determines if this rational number is equal to the one passed
// as a parameter. Assumes they are both reduced.
//-----------------------------------------------------------------
public boolean equals (Rational op2)
{
int num2;
int den2;
int currentNum;
int currentDen;
num2=op2.getNumerator();
den2=op2.getDenominator();
currentNum = getDenominator();
currentDen = getNumerator();
if(currentNum == num2 && currentDen == den2){
return true;
}
else{
return false;
}
}
//-----------------------------------------------------------------
// Returns this rational number as a string.
//-----------------------------------------------------------------
/* public String toString ()
{
return;
}
*/
//-----------------------------------------------------------------
// Reduces this rational number by dividing both the numerator
// and the denominator by their greatest common divisor.
//-----------------------------------------------------------------
private void reduce ()
{
for(int count = denominator; count > 0; count--)
{
if (numerator % count == 0 && denominator % count == 0)
{
numerator /= count;
denominator /= count;
}
}
}
//-----------------------------------------------------------------
// Computes and returns the greatest common divisor of the two
// positive parameters. Uses Euclid's algorithm.
//-----------------------------------------------------------------
private int gcd (int num1, int num2)
{
while (num1 != num2)
if (num1 > num2)
num1 = num1 - num2;
else
num2 = num2 - num1;
return num1;
}
//-----------------------------------------------------------------
// Displays the Rational Number
//-----------------------------------------------------------------
public void show()
{
System.out.println("numerator = " + this.numerator +
" denominator = " + this.denominator);
}
//-----------------------------------------------------------------
// Displays the Rational Number in real form also
//-----------------------------------------------------------------
public void display()
{
}
public static int add(int num, int den, int num2, int den2){
System.out.println("("+num +"/" + den+")" + "+" + "("+ num2 + "/" + den2 +")");
if(den == den2){
num+=num2;
}
if(den != den2){
num *=den2;
den *= den2;
num2 *= den;
num += num2;
}
reduce(num, den);
return 0;
}
public static int subtract(int num, int den, int num2, int den2){
System.out.println("("+num +"/" + den+")" + "-" + "("+ num2 + "/" + den2 +")");
if(den == den2){
num-=num2;
}
if(den != den2){
num *=den2;
den *= den2;
num2 *= den;
num -= num2;
}
reduce(num, den);
return 0;
}
public static int multiply(int num, int den, int num2, int den2){
System.out.println("("+num +"/" + den+")" + "*" + "("+ num2 + "/" + den2 +")");
num *=num2;
den *= den2;
reduce(num, den);
return 0;
}
public static int divide(int num, int den, int num2, int den2){
System.out.println("("+num +"/" + den+")" + "/" + "("+ num2 + "/" + den2 +")");
temp = num2;
num2 = den2;
den2 =temp;
num *= num2;
den *= den2;
reduce(num, den);
return 0;
}
public static void reduce(int num, int den){
for(int count = den; count > 0; count--)
{
if (num % count == 0 && den % count == 0)
{
num /= count;
den /= count;
}
}
if(den == 1){
System.out.println(num);
}
else if(den !=1){
System.out.println(num +"/" + den);
}
}
}

New Topic/Question
Reply




MultiQuote








|