Sunday 23 July 2017

Java Code to compute the two fractions sum in terms of the smallest common denominator.

Problem:

Given the two fractions a/b and c/d, design and implement an algorithm that computes their sum in terms of the smallest common denominator.

Solution:

package com.myprograms;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class LeastCommonDenominator {

int firstFractionNumerator;
int secondFractionNumerator;
int firstFractionDenominator;
int secondFractionDenominator;
String firstFractionNumber;
String secondFractionNumber;

List<Integer> firstNumberMultiples = new ArrayList<Integer>();
List<Integer> secondNumberMultiples = new ArrayList<Integer>();
int leastCommonDenominator;
int positionOfLCMInFirstNumberMultiples;
int positionOfLCMInSecondNumberMultiples;
String sumOfGivenFractions;

public static void main(String[] args) {
LeastCommonDenominator leastCommonDenominator = new LeastCommonDenominator();
leastCommonDenominator.getTheNumbers();
leastCommonDenominator.findFisrFractionDenominatorMultiples();
leastCommonDenominator.findSecondFractionDenominatorMultiples();
leastCommonDenominator.findLeastCommonMultiple();
leastCommonDenominator.findFractionsSum();
leastCommonDenominator.printTheResult();
}

public void getTheNumbers(){
Scanner scanner = new Scanner(System.in);

System.out.println("enter the first fraction");
firstFractionNumber = scanner.nextLine();
String[] firstFractionStrings = firstFractionNumber.split("/");
firstFractionNumerator = Integer.parseInt(firstFractionStrings[0]);
firstFractionDenominator = Integer.parseInt(firstFractionStrings[1]);

System.out.println("enter the scond fraction");
secondFractionNumber = scanner.nextLine();
String[] secondFractionStrings = secondFractionNumber.split("/");
secondFractionNumerator = Integer.parseInt(secondFractionStrings[0]);
secondFractionDenominator = Integer.parseInt(secondFractionStrings[1]);

scanner.close();
}

public void findFisrFractionDenominatorMultiples(){
for(int i = 1; i <= 20; i++){
firstNumberMultiples.add(firstFractionDenominator * i);
}
}

public void findSecondFractionDenominatorMultiples(){
for(int i = 1; i<= 20; i++){
secondNumberMultiples.add(secondFractionDenominator * i);
}
}

public void findLeastCommonMultiple(){
for(Integer i: firstNumberMultiples){
for(Integer j: secondNumberMultiples){
if(i == j){
positionOfLCMInFirstNumberMultiples = firstNumberMultiples.indexOf(i) + 1;
positionOfLCMInSecondNumberMultiples = secondNumberMultiples.indexOf(j) + 1;
leastCommonDenominator = i;
break;
}
}
if(leastCommonDenominator != 0){
break;
}
}
}

public void findFractionsSum(){
sumOfGivenFractions = (firstFractionNumerator * positionOfLCMInFirstNumberMultiples) + (secondFractionNumerator * positionOfLCMInSecondNumberMultiples) + "/" + leastCommonDenominator;
}

public void printTheResult(){
System.out.println(firstFractionDenominator + " multiples are " + firstNumberMultiples);
System.out.println(secondFractionDenominator + " multiples are " + secondNumberMultiples);
System.out.println("the Least common multiple of " + firstFractionDenominator + " and " + secondFractionDenominator + " is " + leastCommonDenominator);
System.out.println("the sum of given fractions is " + sumOfGivenFractions);
}

}


Output:

enter the first fraction
2/21
enter the scond fraction
1/6
21 multiples are [21, 42, 63, 84, 105, 126, 147, 168, 189, 210, 231, 252, 273, 294, 315, 336, 357, 378, 399, 420]
6 multiples are [6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120]
the Least common multiple of 21 and 6 is 42
the sum of given fractions is 11/42


No comments:

Post a Comment

Program for primality test in JAVA

Problem: ============= Program for primality test in JAVA What is primality test? A primality test is an algorithm for determining wh...