// // Quadratic.java // Quadratic // // Created by Guy Lapalme on Tue Jun 01 2004. // Copyright (c) 2004 Universite de Montreal. All rights reserved. // import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Quadratic { // affichage "simplifié" d'un coefficient private static String coeff(boolean signe,double a,String terme){ if(a==0)return ""; if(a==1)return (signe?"+":"")+(terme.length()==0?"1.0":terme); if(a<0) return a+terme; return (signe?"+":"")+a+terme; } public static void resoudre(double a, double b, double c){ System.out.println(coeff(false,a,"x^2") + coeff(a!=0,b,"x") + coeff(a!=0 || b!=0,c,"")); double disc = b*b - 4*a*c; if (a==0) { // équation linéaire if(c==0) System.out.println("racine=0"); else if (b==0) System.out.println("racine infinie"); else System.out.println("racine="+(-b/c)); } else if (disc < 0) System.out.println("racines imaginaires"); else if (disc == 0) System.out.println("racine ="+(-b/(2*a))); else { double d2 = Math.sqrt(disc); System.out.println("racines ="+((-b+d2)/(2*a))+","+((-b-d2)/(2*a))); } } public static void main (String args[]) { if(args.length==3){ resoudre(Double.parseDouble(args[0]), Double.parseDouble(args[1]), Double.parseDouble(args[2])); } else { // lancer une boucle d'interaction System.out.println("Entrez 3 nombres séparés par des blancs"); try { String ligne; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); while (true) { System.out.print("? "); ligne = in.readLine(); if(ligne==null || ligne.length()==0) break; // arrête sur une ligne vide args=ligne.split("\\s+"); if(args.length==3){ resoudre(Double.parseDouble(args[0]), Double.parseDouble(args[1]), Double.parseDouble(args[2])); } else { System.out.println("Attend trois valeurs mais "+args.length+ " recues"); } } } catch (IOException e){ System.out.println("Erreur d'entree-sortie"); } } } }