The following code can use loops, strings, arrays, functions, and classes. The c
ID: 668875 • Letter: T
Question
The following code can use loops, strings, arrays, functions, and classes. The code must be able to accept and perform operations on the whole number portion of a mixed number (like the '2' in 2 1/2):
In previous chapters, you have been developing a Fraction structure for Teacher’s Pet
Software. Now you will develop a class that contains the fields and functions that a Fraction
needs. Create a Fraction class with three private data fields for whole number, numerator,
and denominator. Also create a constant static public field to hold the symbol that separates a
numerator and denominator when a Fraction is displayed—the slash. Create three public
member functions for the class, as follows:
» An enterFractionValue()function that prompts the user to enter values for the
Fraction. Do not allow the user to enter a value of 0 for the denominator of any
Fraction; continue to prompt the user for a denominator value until a valid one is
entered.
» A reduceFraction()function that reduces a Fraction to proper form. For example,
a Fraction with the value 0 2/6 would be reduced to 0 1/3 and a Fraction with the
value 4 18/4 would be reduced to 8 1/2.
» A displayFraction()function that displays the Fraction whole number, numerator,
slash, and denominator.
Add any other functions to the Fraction class that will be useful to you. Create a main()
function that declares a Fraction object, and continues to get Fraction values from the
user until the user enters a Fraction with value 0 (both the whole number and numerator
are 0). For each Fraction entered, display the Fraction, reduce the Fraction, and display
the Fraction again.
Explanation / Answer
//Language is not specified, so i am writing the code in java
import java.util.Scanner;
public class Fraction {
private int wholenumber;
private int numerator;
private int denominator;
public static String slash ="/";
public static void main(String[] args) throws Exception{
Fraction fc = new Fraction();
while(true) {
fc.enterFractionValue();
if(fc.wholenumber == 0 && fc.numerator == 0)
break;
fc.reduceFraction();
fc.displayFraction();
}
}
public void enterFractionValue() {
Scanner sc = new Scanner(System.in);
// System.out.println("Enter a fractional value [ Format should be like 4 2/3] ");
System.out.println("Enter whole number in the fraction");
wholenumber = sc.nextInt();
System.out.println("Enter numerator in the fraction");
numerator = sc.nextInt();
System.out.println("Enter denominator in the fraction");
int d;
while(true) {
d = sc.nextInt();
if(d==0)
System.out.println("Denominator should not be 0");
else {
denominator = d;
break;
}
}
}
public void reduceFraction() {
if(denominator % numerator == 0 ) {
denominator = denominator / numerator;
numerator = 1;
} else if(numerator % denominator == 0 ) {
wholenumber += numerator / denominator;
numerator = 0;
denominator = 1;
} else {
int hcf = getHCF(denominator, numerator);
if(hcf > 1) {
denominator /= hcf;
numerator /= hcf;
if(denominator < numerator) {
int n = numerator/denominator;
wholenumber += n;
numerator = numerator % denominator;
}
}
}
}
public void displayFraction() {
System.out.println(" Entered fraction : "+ wholenumber+" "+ numerator+Fraction.slash+denominator);
}
private int getHCF(int a, int b) {
int hcf=0;
int min = a > b? b: a;
for(int i=min; i >= 1; i--)
{
if(a%i == 0 && b%i == 0)
{
hcf = i;
break;
}
}
return hcf;
}
public int getWholenumber() {
return wholenumber;
}
public void setWholenumber(int wholenumber) {
this.wholenumber = wholenumber;
}
public int getNumerator() {
return numerator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
public int getDenominator() {
return denominator;
}
public void setDenominator(int denominator) {
this.denominator = denominator;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.