Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class EquacioSegonGrau {
- private double a, b, c; // Coeficients de l’ecuació de 2on grau
- private String sol; // Text amb la solució
- /** Inicialitza els coeficients de l’equació i el seu resultat */
- public EquacioSegonGrau(double a, double b, double c) {
- this.a = a; this.b = b; this.c = c;
- sol = resoldre();
- }
- /** Retorna el coeficient quadràtic */
- public double getCoefA() { return a; }
- /** Retorna el coeficient linial */
- public double getCoefB() { return b; }
- /** Retorna el coeficient constant */
- public double getCoefC() { return c; }
- /** Retorna el text amb la solució */
- public String getSol() { return sol; }
- /** Retorna un String que representa l’equació amb el format ax^2+bx+c=0 */
- public String toString() {
- String s = new String();
- if(b==0){
- s= a + "x^2" + signe(0,c) + "=0";
- } else {
- s= a + "x^2" + signe(0,b) + "x" + signe(0,c) +"=0";
- }
- return s;
- }
- /** Calcula les solucions dels casos possibles i construeix el String amb el
- * missatge resultant.
- * Els casos possibles i els missatges resultants són:
- * CAS MISSATGE
- * a=b=c=0 Infinites solucions
- * a=b=0, c!=0 Sense solució
- * a=0, b!=0 Equació de primer grau x = ...
- * a!=0, disc=0 Una solució real doble x = ...
- * a!=0, disc>0 Dues solucions reals x = ... i x = ...
- * a!=0, disc<0 Dues solucions complexes x = ... i x = ...
- */
- private String resoldre() {
- String solucio = new String();
- double disc, x1, x2, arrel, denominador, x10,x11,x20,x21;
- disc = Math.pow(b,2)-4*a*c;
- denominador = 2*a;
- if (a==0){
- if(b==0){
- if(c==0){
- /**Infinites solucions. */
- solucio = "Infinites solucions.";
- } else{
- /**No te solució. (c=0) */
- solucio = "Sense solució.";
- }
- } else {
- /**Eq. de primer grau x=-c/b */
- x1=-c/b;
- solucio = String.format("Equació de primer grau x=%.4f",x1);
- }
- } else {
- if (disc==0){
- /**Una solució real doble. */
- x1= (-b) / (denominador);
- solucio = String.format("Una solució real doble x=%.4f",x1);
- } else {
- if(disc>0){
- /**Dues solucions reals. */
- arrel = Math.sqrt(disc);
- x1 = (-b + arrel) / (denominador);
- x2 = (-b - arrel) / (denominador);
- solucio = String.format("Dues solucions reals x=%.4f i x=%.4f",x1,x2);
- } else {
- /**Dues solucions complexes. */
- arrel = Math.sqrt(Math.abs(disc)); // sqrt( |b^2-4*a*c| )
- x10 = -b/denominador;
- x11 = arrel / denominador;
- x20 = -b/denominador;
- x21 = -arrel / denominador;
- solucio = String.format("Dues solucions complexes x=%.4f",x10) + signe(1,x11) + String.format("·i i x=%.4f",x20) + signe(1,x21) + "·i";
- }
- }
- }
- return solucio;
- }
- /**Torna un + o res, segons siga a>0 o a<0 o a=0*/
- private String signe(int format, double a){
- String s = new String();
- if (format==0){
- if(a>=0.){
- if(a==1){
- s= "+";
- }else{
- s= "+" + a;
- }
- } else {
- if(a==-1){
- s= "-";
- } else {
- s= "" + a;
- }
- }
- } else {
- if(a>=0.){
- s= String.format("+%.4f",a);
- } else {
- s= String.format("%.4f",a);
- }
- }
- return s;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement