Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Marathon: arriva il Fortnite hardcore
Marathon: arriva il Fortnite hardcore
Marathon è il titolo multiplayer competitivo del momento. Ecco quali sono le caratteristiche di gioco principali, insieme alle nostre prime considerazioni dopo qualche "run" nell'extraction shooter di Bungie
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-11-2006, 14:39   #1
niky89
Senior Member
 
L'Avatar di niky89
 
Iscritto dal: Aug 2004
Città: Veneto
Messaggi: 2308
Equazione 2° grado con bluej

Ciao a tutti vorrei sapere come programmare la risoluzione di una equazione di secondo grado con bluej... grazie ciao
__________________
sono colui che è
niky89 è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2006, 20:18   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Se per BlueJ intendi questo IDE Java qui allora immagino che il problema si risolva come con un comune programma Java.

Frazioni e -B + 2AC x HK radice del pim pum pam.

Armato di google ho prodotto la seguente immondizia che non userei per risolvere un compito di matematica neanche alle elementari MA è molto divertente .

Codice:
import java.util.*;
import java.io.*;

public class Main {

	public static void main(String[] args) {
		PrintStream out = System.out;
		out.println("Inserire i valori dei coefficienti A, B e C separati da uno spazio");
		out.println("Es: 1 -4 5/7");
		out.println("Es: 3/2 0 0");
		String line = new Scanner(System.in).nextLine();
		StringTokenizer tk = new StringTokenizer(line);
		Fraction a = toFraction(tk.nextToken());
		Fraction b = toFraction(tk.nextToken());
		Fraction c = toFraction(tk.nextToken());
		Biqua qua = new Biqua(a, b, c);
		qua.solve();
		qua.dumpSolution();
	}
	
	private static Fraction toFraction(String token) {
		StringTokenizer tk = new StringTokenizer(token, "/");
		int num = Integer.parseInt(tk.nextToken());
		int den = 1;
		if(tk.hasMoreTokens()) {
			den = Integer.parseInt(tk.nextToken());
		}
		return new Fraction(num, den);
	}
}

/** Rappresentazione di un'equazioned di secondo grado */
class Biqua {
	/* coefficienti dell'equazione */
	private Fraction a, b, c;
	/* risultati dell'equazione */
	private Number solutionOne, solutionTwo;
	/* true se l'equazione sia stata risolta */
	private boolean solved = false;
	
	/** Crea un'equazione con i coefficienti a, b e c (forma
	normale Ax^2 + Bx + C = 0) */
	public Biqua(Fraction a, Fraction b, Fraction c) {
		this.a = a;
		this.b = b;
		this.c = c;
	}
	
	public Number getX1() {
		return solutionOne;
	}
	
	public Number getX2() {
		return solutionTwo;
	}
	
	public void dumpSolution() {
		if(!solved) {
			solve();
		}
		if(solutionOne == null && solutionTwo == null) {
			System.out.println("Nessuna soluzione");
		} else if(solutionOne != null && solutionTwo == null) {
			System.out.println("Una soluzione: x = " + solutionOne);
		} else {
			System.out.println("Due soluzioni: x1 = " + solutionOne + " x2 = " + solutionTwo);
		}
	}
	
	/** Restituisce una rappresentazione testuale di
	questa equazione */
	public String toString() {
		return a + " " + b + " " + c;
	}
	
	/** Risolve l'equazione */
	public void solve() {
		if(b.equals(0) && c.equals(0)) {
			monoSolve();
		} else if(c.equals(0)) {
			spuriousSolve();
		} else if(b.equals(0)) {
			pureSolve();
		} else {
			completeSolve();
		}
		solved = true;
	}
	
	private void monoSolve() {
		//Ax^2 = 0
		solutionOne = 0;
	}
	
	private void spuriousSolve() {
		//Ax^2 + B = 0
		Fraction x2 = b.clone().multiply(-1).divide(a);
		solutionOne = 0;
		solutionTwo = x2;
	}
	
	private void pureSolve() {
		//x^2 = -C/A
		if(c.signum() == a.signum()) {
			System.out.println("Nessuna soluzione");
		} else {
			Fraction ca = c.clone().divide(a).multiply(-1);
			boolean sqr = ca.squareRoot();
			if(sqr) {
				Fraction x1 = ca.clone().multiply(-1);
				Fraction x2 = ca;
				solutionOne = x1;
				solutionTwo = x2;
				//System.out.println("Due soluzioni, x1 = " + x1 + " x2 = " + x2);
			} else {
				double doubleSqr = ca.squareRootAsDouble();
				double x1 = -1 * doubleSqr;
				double x2 = +1 * doubleSqr;
				solutionOne = x1;
				solutionTwo = x2;
				//System.out.println("Due soluzioni \"irrazionali\", x1 = " + x1 + " x2 = " + x2);
			}
		}
	}
	
	private void completeSolve() {
		//Ax^2 + Bx + C
		Fraction disc = b.clone().pow(2).sum(a.clone().multiply(c).multiply(-4));
		if(disc.signum() < 0) {
			System.out.println("Discriminante negativo.");
		} else {
			boolean sqr = disc.squareRoot();
			if(sqr) {
				Fraction a2 = a.clone().multiply(2);
				Fraction x1 = b.clone().multiply(-1).sum(disc).divide(a2);
				Fraction x2 = b.clone().multiply(-1).subtract(disc).divide(a2);
				solutionOne = x1;
				solutionTwo = x2;
				//System.out.println("Due soluzioni, x1 = " + x1 + " x2 = " + x2);
			} else {
				double squareRoot = disc.squareRootAsDouble();
				double bDouble = -1 * b.doubleValue();
				double a2 = a.doubleValue() * 2;
				double x1 = (bDouble + squareRoot) / a2;
				double x2 = (bDouble - squareRoot) / a2;
				solutionOne = x1;
				solutionTwo = x2;
				//System.out.println("Due soluzioni \"irrazionali\", x1 = " + x1 + " x2 = "+ x2); 
			}
		}
	}
}

/** Una frazione */
class Fraction extends Number {
	/* den sta per denominatore, num sta per numeratore, come
	in 2/4, 2 = numeratore, 4 = denominatore */
	private int den, num;
	
	/** Inizializza una frazione con denominatore unitario */
	public Fraction(int num) {
		this(num, 1);
	}
	
	/** Inizializza una frazione con il numeratore num ed il denominatore
	den */
	public Fraction(int num, int den) throws IllegalArgumentException {
		if(den == 0) throw new IllegalArgumentException("Denominator cannot be 0");
		this.den = den;
		this.num = num;
		reduce();
	}
	
	public byte byteValue() {
		return (byte)doubleValue();
	}
	
	public short shortValue() {
		return (short)doubleValue();
	}
	
	public float floatValue() {
		return (float)doubleValue();
	}
	
	public int intValue() {
		return num / den;
	}
	
	public long longValue() {
		return intValue();
	}
	
	/** Restituisce il segno di questa frazione */
	public int signum() {
		return (int)(Math.signum(den) * Math.signum(num));
	}
	
	/* true se questa frazione abbia un valore pari
	all'intero in argomento */
	public boolean equals(int value) {
		if(value == 0) return num == 0;
		return equals(new Fraction(value, 1));
	}
	
	/* true se questa frazione abbia il valore della
	frazione in argomento */
	public boolean equals(Fraction that) {
		that.reduce();
		reduce();
		return
			den == that.den &&
			num == that.num;
	}
	
	/** Restituisce la radice quadrata di questa
	frazione in formato double */
	public double squareRootAsDouble() {
		return Math.sqrt(num) / Math.sqrt(den);
	}
	
	/** Restituisce il valore di questa frazione
	in formato double */
	public double doubleValue() {
		return (double)num / (double)den;
	}
	
	/** Trasforma questa frazione nella radice quadrata
	di sè stessa e restituisce true se tale radice sia un
	numero razionale (un numero che può essere espresso
	tramite una frazione). Altrimenti restituisce false. */
	public boolean squareRoot() {
		/* Molto finemente, se le radici del numeratore
		e del denominatore sono numeri interi, allora
		la radice della frazione è considerata
		razionale */
		boolean result = false;
		double denSqrt = Math.sqrt(den);
		double numSqrt = Math.sqrt(num);
		int intDenSqrt = (int)denSqrt;
		int intNumSqrt = (int)numSqrt;
		if(intDenSqrt == denSqrt && intNumSqrt == numSqrt) {
			result = true;
			den = intDenSqrt;
			num = intNumSqrt;
		}
		return result;
	}
	
	/** Trasforma questa frazione nell'elevamento
	a potenza factor di sè stessa */
	public Fraction pow(int factor) {
		den = (int)Math.pow(den, factor);
		num = (int)Math.pow(num, factor);
		reduce();
		return this;
	}
	
	/** Trasforma questa frazione nel risultato della
	moltiplicazione di questa frazione con l'intero
	factor */
	public Fraction multiply(int factor) {
		num *= factor;
		reduce();
		return this;
	}
	
	/* Trasforma questa frazione nel risultato della
	moltiplicazione tra questa frazione e la frazione
	in argomento */
	public Fraction multiply(Fraction that) {
		den *= that.den;
		num *= that.num;
		reduce();
		return this;
	}
	
	/** Trasforma questa frazione nel risultato della
	divisione di questa frazione per quella in
	argomento */
	public Fraction divide(Fraction that) {
		den *= that.num;
		num *= that.den;
		reduce();
		return this;
	}
	
	/** Trasforma questa frazione nel risultato
	della sottrazione della frazione in argomento
	a questa frazione */
	public Fraction subtract(Fraction that) {
		int newDen = den * that.den;
		int newNum = num * that.den - den * that.num;
		num = newNum;
		den = newDen;
		reduce();
		return this;
	}
	
	/** Trasforma questa frazione nel risultato
	della somma tra questa frazione e quella in
	argomento */
	public Fraction sum(Fraction that) {
		int newDen = den * that.den;
		int newNum = den * that.num + num * that.den;
		num = newNum;
		den = newDen;
		reduce();
		return this;
	}
	
	/** Crea un duplicato autonomo di questa
	frazione */
	public Fraction clone() {
		return new Fraction(num, den);
	}
	
	/** Riduce la frazione */
	private void reduce() {
		int div = maxCommonDivisor(Math.abs(num), Math.abs(den));
		if(div > 1) {
			num /= div;
			den /= div;
		}
		if(Math.signum(den) < 0) {
			num *= -1;
			den *= -1;
		}
	}
	
	/* Restituisce il massimo comune divisore dei numeri
	a e b */
	private int maxCommonDivisor(int a, int b) {
		if(b == 0) return a;
		return maxCommonDivisor(b, a % b);
	}
	
	/** Restituisce una rappresentazione in formato
	stringa di questa frazione */
	public String toString() {
		return 
			den == 1 ?
			String.valueOf(num) :
			"(" + num + "/" + den + ")";
	}
}
Molto teoricamente, dovrebbe maneggiare, finchè può, delle frazioni. Tipo:

due ics quadro meno cinque ics più due fa due e un mezzo

quattro noni ics quadro meno uno fa men tre mezzi e tre mezzi

mentre

ics quadro meno due fa meno 1.4142135623730951 e più 1.4142135623730951 perchè la radice di due è irrazionale.

Non garantisco neanche che parta .
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2006, 09:44   #3
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Scusa, ma...
Codice:
...
float s1 = -b + pim pum pam,
s2 = -b - pim pum pam;

System.out.println("x1: " + s1 + "\nx2" + s2);
...
E poi basta 'na calcolatrice, o la console di python, o octave, o matlab, o C, o basic (!)...
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2006, 12:08   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
A volte uno programma perchè è divertente.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2006, 17:35   #5
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Certo, non era mica una critica a te...

Solo mi sembrava strano che chiedesse una cosa del genere
lovaz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Artemis II: completata la manovra di ins...
Panasonic LUMIX TZ300: la nuova compatta...
La società aerospaziale italiana ...
Il Politecnico di Milano guiderà ...
Amazon Leo punta ad aumentare la cadenza...
Pro Type Ergo: Razer si lancia a gamba t...
Artemis II: dal guasto risolto alla toil...
Le immagini e i video più spettac...
Previsioni drastiche di TrendForce: la D...
La PS6 portatile sarà più potente della ...
Toshiba annuncia i primi dischi FC-MAMR ...
Amazon Leo offrirà l'accesso a Internet ...
Alienware presenta i nuovi desktop Area-...
Fiat 600 benzina senza ibrido: 101 CV, c...
DJI Mini 4K Combo a 269€ o DJI Neo da 14...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v