Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-11-2006, 15:39   #1
niky89
Senior Member
 
L'Avatar di niky89
 
Iscritto dal: Aug 2004
Città: Veneto
Messaggi: 2303
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, 21: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, 10: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, 13: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, 18: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 vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Numeri da record, Xiaomi distribuisce ol...
BitLocker accelerato via hardware: Micro...
Blue Origin prosegue lo sviluppo dei lan...
Moore Threads: nuove GPU 15 volte pi&ugr...
Steam diventa esclusivamente 64-bit: Val...
La Corte Suprema restituisce a Elon Musk...
X lancia Creator Studio su mobile: nuovi...
Dieci anni fa SpaceX fece atterrare per ...
POCO M8 e M8 Pro arriveranno nel 2026: e...
Caos Formula 1: il motore Mercedes &egra...
Tariffe nazionali per le chiamate e gli ...
Tassa chilometrica non solo per elettric...
FSR 4 su Radeon RX 5000, 6000 e 7000? Li...
Quanti alberi ci sono in Skyrim? In The ...
Pocket Max, la nuova console Mangmi punt...
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: 19:09.


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