Thursday 25 August 2016

Chapter 7 Exercise 13, Introduction to Java Programming, Tenth Edition Y. Daniel LiangY.

7.25 (Algebra: solve quadratic equations) Write a method for solving a quadratic equation using the following header: public static int solveQuadratic(double[] eqn, double[] roots) The coefficients of a quadratic equation ax2 + bx + c = 0 are passed to the array eqn and the real roots are stored in roots. The method returns the number of real roots. See Programming Exercise 3.1 on how to solve a quadratic equation. Write a program that prompts the user to enter values for a, b, and c and displays the number of real roots and all real roots.



import java.util.Scanner;
 
 
public class ProgrammingEx7_25 {
 
 public static void main(String[] args) {
 
  double[] eqn = new double[3];
  double[] roots = new double[2];
  Scanner input = new Scanner(System.in);
 
  System.out.print("Enter a, b, c:");
  eqn[0] = input.nextDouble();
  eqn[1] = input.nextDouble();
  eqn[2] = input.nextDouble();
 
  int numberOfRoots = solveQuadratic(eqn, roots);
 
  if (numberOfRoots == 0) {
   System.out.println("The equation has no real roots");
 
  } else if (numberOfRoots == 2) {
   System.out.println("The equation has two roots " + roots[0]
     + " and " + roots[1]);
  } else if (numberOfRoots == 1) {
   System.out.println("The equation has one root " + roots[0]);
  }
 
 }
 
 public static int solveQuadratic(double[] eqn, double[] roots) {
  double a = eqn[0];
  double b = eqn[1];
  double c = eqn[2];
  double discriminant = Math.pow(b, 2) - 4 * a * c;
 
  if (discriminant < 0) {
 
   return 0;
  }
 
  roots[0] = (-b + Math.sqrt(discriminant)) / (2 * a);
  roots[1] = (-b - Math.sqrt(discriminant)) / (2 * a);
 
  if (discriminant > 0) {
   return 2;
  } else {
 
   return 1;
  }
 
 }
 
}

No comments :

Post a Comment