In: Computer Science
ASAP
(Algebra: vertex form equations) The equation of a parabola can be expressed in either standard form (y = ax^2 + bx + c) or vertex form (y = a(x-h)^2 + k). Write a program that prompts the user to enter a, b, and c as integers in standard form and displays h and k in the vertex form. Hint: Use the Rational class in LiveExample 13.13 for computing h and k. Use the template at https://liveexample.pearsoncmg.com/test/Exercise13_21Test.txt for your code. Sample Run 1 Enter a, b, c: 1 3 1 h is -3/2 k is -5/4 Sample Run 2 Enter a, b, c: 2 3 4 h is -3/4 k is 23/8 Class Name: Exercise13_21 If you get a logical or runtime error, please refer https://liveexample.pearsoncmg.com/faq.html.
Hi, Please find the solution and rate the answer. Comments inline. Thanks
package com.company;
import java.util.Scanner;
public class Exercise13_21 {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Enter the Coefficients");
System.out.println("Enter a:");
int a = sc.nextInt();
System.out.println("Enter b:");
int b = sc.nextInt();
System.out.println("Enter c:");
int c = sc.nextInt();
//so we need to compute 'h' which is -b/(2*a)
Rational h = new Rational((-1)*b,2*a);
//finding k
Rational hsquare = new Rational(h.multiply(h).getNumerator(),h.multiply(h).getDenominator());
Rational first = new Rational(hsquare.multiply(new Rational(a,1)).getNumerator(),hsquare.multiply(new Rational(a,1)).getDenominator());
Rational second = h.multiply(new Rational(b,1));
Rational finalAnswer = first.add(second).add(new Rational(c,1));
System.out.println("Vertex form: h,k"+h+" and k is "+finalAnswer);
}
}
// Copy from the book
class Rational extends Number implements Comparable<Rational> {
// Data fields for numerator and denominator
private long numerator = 0;
private long denominator = 1;
/** Construct a rational with default properties */
public Rational() {
this(0, 1);
}
/** Construct a rational with specified numerator and denominator */
public Rational(long numerator, long denominator) {
long gcd = gcd(numerator, denominator);
this.numerator = (denominator > 0 ? 1 : -1) * numerator / gcd;
this.denominator = Math.abs(denominator) / gcd;
}
/** Find GCD of two numbers */
private static long gcd(long n, long d) {
long n1 = Math.abs(n);
long n2 = Math.abs(d);
int gcd = 1;
for (int k = 1; k <= n1 && k <= n2; k++) {
if (n1 % k == 0 && n2 % k == 0)
gcd = k;
}
return gcd;
}
/** Return numerator */
public long getNumerator() {
return numerator;
}
/** Return denominator */
public long getDenominator() {
return denominator;
}
/** Add a rational number to this rational */
public Rational add(Rational secondRational) {
long n = numerator * secondRational.getDenominator() +
denominator * secondRational.getNumerator();
long d = denominator * secondRational.getDenominator();
return new Rational(n, d);
}
/** Subtract a rational number from this rational */
public Rational subtract(Rational secondRational) {
long n = numerator * secondRational.getDenominator()
- denominator * secondRational.getNumerator();
long d = denominator * secondRational.getDenominator();
return new Rational(n, d);
}
/** Multiply a rational number to this rational */
public Rational multiply(Rational secondRational) {
long n = numerator * secondRational.getNumerator();
long d = denominator * secondRational.getDenominator();
return new Rational(n, d);
}
/** Divide a rational number from this rational */
public Rational divide(Rational secondRational) {
long n = numerator * secondRational.getDenominator();
long d = denominator * secondRational.numerator;
return new Rational(n, d);
}
@Override
public String toString() {
if (denominator == 1)
return numerator + "";
else
return numerator + "/" + denominator;
}
@Override // Override the equals method in the Object class
public boolean equals(Object other) {
if ((this.subtract((Rational)(other))).getNumerator() == 0)
return true;
else
return false;
}
@Override // Implement the abstract intValue method in Number
public int intValue() {
return (int)doubleValue();
}
@Override // Implement the abstract floatValue method in Number
public float floatValue() {
return (float)doubleValue();
}
@Override // Implement the doubleValue method in Number
public double doubleValue() {
return numerator * 1.0 / denominator;
}
@Override // Implement the abstract longValue method in Number
public long longValue() {
return (long)doubleValue();
}
@Override // Implement the compareTo method in Comparable
public int compareTo(Rational o) {
if (this.subtract(o).getNumerator() > 0)
return 1;
else if (this.subtract(o).getNumerator() < 0)
return -1;
else
return 0;
}
}
Sample output:
