|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Member
Iscritto dal: Sep 2008
Messaggi: 91
|
[java] equazione secondo grado
Ciao a tutti!
Devo realizzare un programma che chiesti in ingresso i coefficienti a,b,c di un’equazione di secondo grado, calcoli il numero di soluzioni (0 oppure 1 oppure 2) e stampi i valori esempio: a: 3 b: 4 c: 1 numero di soluzioni:2 soluzione1: -0.333333 soluzione2: -1 Il codice è il seguente: Codice:
package equazione2grado;
import java.math.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Dammi il coefficiente a:");
String line = input.readLine();
int a = Integer.parseInt(line);
System.out.println("Dammi il coefficiente b:");
line = input.readLine();
int b = Integer.parseInt(line);
System.out.println("Dammi il coefficiente c:");
line = input.readLine();
int c = Integer.parseInt(line);
double soluzione1 = (-b + Math.sqrt(b ^ 2 - 4 * a * c)) / 2 * a;
double soluzione2 = (-b - Math.sqrt(b ^ 2 - 4 * a * c)) / 2 * a;
System.out.println("La prima soluzione è: " + soluzione1);
System.out.println("La seconda soluzione è: " + soluzione2);
}
}
Quote:
Ciao e grazie |
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 136
|
perchè non usi semplicemente l'util Scanner?
Codice:
import java.util.scanner;
[...]
Scanner keyb = new Scanner(System.in);
System.out.println("Dammi il coefficiente a:");
int a = keyb.nextInt();
x tornare al tuo problema...nn hai trattato i casi in cui il determinante è negativo. cmq NaN => Not A Number, è probabile che mettendo qualche parentesi e usando semplicemente lo scanner di int, senza passare per String e poi per il metodo parseInt il problema si risolve ps: piccolo consiglio, metti le parentesi, soprattutto quando fai operazioni! sebbene a volte inutili aiutano la lettura di terzi, ti aiutano a capire se sai quello che stai facendo e prevengono errori a volte stupidi Ultima modifica di n0n4m3 : 11-07-2009 alle 18:22. |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Sep 2008
Messaggi: 91
|
ciao
Quote:
a=3 b=4 c=1 (-4+sqrt(16-4*3*1))/6 |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
b ^ 2
^ e' l'operatore di or esclusivo.. Devi usare Math.pow() per calcolare la potenza.. |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Sep 2008
Messaggi: 91
|
Quote:
b*Math.pow(2) ? Per motivi che non sto ad elencare, non voglio utilizzare: Codice:
import java.util.scanner; Scanner keyb = new Scanner(System.in); int a = keyb.nextInt(); |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
|
Quote:
Math.pow(b,2); per fare b^2 Per lo scanner va benissimo anche il tuo metodo, io ho sempre utilizzato quello ed e' sempre andato bene, quindi, perche' cambiare? |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 136
|
sisi, lo so che con a= 3, b = 4, e c= 1 ottieni un delta positivo, ma dalla tua descrizione di come dovrebbe funzionare il programma non li hai cmq tenuti in conto
per evitare il math.pow(a, 2) fai semplicemente a * a ps: si risparmiano molte linee di codice usando lo Scanner...cmq de gustibus |
|
|
|
|
|
#8 | |
|
Member
Iscritto dal: Sep 2008
Messaggi: 91
|
Ora il codice è questo:
Codice:
import java.io.*;
public class Main {
public static void main(String[] args)throws Exception {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Dammi il coefficiente a:");
String line = input.readLine();
int a = Integer.parseInt(line);
System.out.println("Dammi il coefficiente b:");
line = input.readLine();
int b = Integer.parseInt(line);
System.out.println("Dammi il coefficiente c:");
line = input.readLine();
int c = Integer.parseInt(line);
double soluzione1 = (-b + Math.sqrt(Math.pow(b,2) - 4 * a * c)) / 2 * a;
double soluzione2 = (-b - Math.sqrt(Math.pow(b,2) - 4 * a * c)) / 2 * a;
System.out.println("La prima soluzione è: " + soluzione1);
System.out.println("La seconda soluzione è: " + soluzione2);
}
}
Quote:
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
metti tra tonde il denominatore della formula 2 * a..
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Sep 2008
Messaggi: 91
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
figurati. hai capito il perchè? a parità di priorità tra operandi si eseguono da sinistra verso destra. nel tuo caso quindi veniva eseguita prima la divisione e poi la moltiplicazione.
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Codice:
b*b; Codice:
public class Eq2grado
{
/** Attributi di Eq2grado */
double a, b, c; // i tre coefficienti di un'equazione di secondo grado
double[] s = new double[2]; // le (0-2) soluzioni possibili dell'equazione
boolean intersezioniOk = false; // TRUE se ci sono intersezioni valide
/**
* Risolve l'equazione di secondo grado
*
* @param a primo coefficiente
* @param b secondo coefficiente
* @param c terzo coefficiente
*/
public Eq2grado(double a, double b, double c)
{
this.a = a;
this.b = b;
this.c = c;
double delta = b*b - 4*a*c;
if (delta >= 0)
{
s[0] = ( -b + Math.sqrt(delta) ) / (2*a);
s[1] = ( -b - Math.sqrt(delta) ) / (2*a);
intersezioniOk = true;
}
else
{
intersezioniOk = false;
System.out.println("Eq2grado: non esiste un'intersezione reale.");
}
}
}
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
__________________
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
tranquillo è la stessa cosa, ti sta dicendo che Math.pow(b, 2) è uguale che b * b come Math.pow(n, 3) è uguale a n * n * n.
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
Quote:
__________________
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:29.




















