# pq Formel



## Fienchen (13. Nov 2004)

Halli hallo,
hier kommt eine richtige Anfänger frage: Wir sollen folgendes Programm schreiben:
Aufgabe 2
 Erstellen Sie eine Klasse QuadGleichung, die quadratische Gleichungen
der Form
x2 + p · x + q = 0
repr¨asentiert. Die Klasse ben¨otigt folgende Objektfelder und Methoden:
• double p,q, Objektfelder, die die Koezienten der Gleichung aufnehmen,
• QuadGleichung(double koffP, double koeffQ), Konstruktor, der die
Objektfelder entsprechend setzt,
• boolean istLoesbar(), Methode, die angibt, ob die Gleichung l¨osbar ist,
• boolean istEindeutigLoesbar(), Methode, die angibt, ob eine Gleichung
sogar eindeutig l¨osbar ist.
• double loesung1(), Methode, die die gr¨oßere L¨osung einer l¨osbaren Gleichung
angibt.
Und genau beimletzten liegt das Probelm. denn wenn ich versuche das mit MAX_INFINITY (....)
zu lösenkommt die Fehle meldung class expected oder iodentifier expectet.
Ich hab keine Ahnung wie ich da anfangen muss...


----------



## comp89 (13. Nov 2004)

bitte den code posten


----------



## Necko (13. Nov 2004)

Hallo Fienchen,
hier hast du eine mögliche Lösung 
Es sind zwei Klassen



```
import java.io.*;  //wegen IOException, BufferedReader, InputStreamReader

/** Berechnet mit der qp-Formel die Lösungen der quadratischen Gleichungen, 
		die vom Benutzer selbst gewählt werden kann.
		
		 */
class pqMain
{
	public static void main(String[] args) throws IOException
	{
		pqHelp Funktion = new pqHelp();
		Funktion.erfasseP();
		Funktion.erfasseQ();
		Funktion.schreibeGleichung();
		Funktion.bestimmeDiskriminante();
		Funktion.bestimmeLoesungen();
		Funktion.schreibeLoesungen();
	}
}
```


```
import java.io.*;    //wegen IOException, BufferedReader, InputStreamReader
import java.text.*;  //wegen DecimalFormat

/** Enthält sämtliche Methoden zur Berechnung der jeweils möglichen Lösungen.
		Die p- und q-Werte werden eingelesen, die Anzahl der Lösungen wird ausgegeben, und die Lösungen 
		selber werden gerundet auf 8 Stellen hinter dem Komma ausgegeben.
  */
class Loesungsberechnung
{
	private double p;																	//p-Wert:bei quadratischen Gleichungen = Faktor vor x^1
	private double q;																	//q-Wert:bei quadratischen Gleichungen = Ordinate
	private double D; 																//Diskrimante zur Bestimmung der Lösungsanzahl
	private double x;                                 //x=Lösungswert bei (D<0) und (D==0)
	private double x1;                                //x1=Lösungswert bei Addition mit D
	private double x2;                                //x2=Lösungswert bei Subtraktion mit D
	
	/** Liest p ein.
	  */
	void erfasseP() throws IOException
	{
		System.out.print("Bitte geben Sie den p an: ");
		p = erfasseDouble();
	}
	
	/** Liest q ein.
	  */
	void erfasseQ() throws IOException
	{
		System.out.print("Bitte geben Sie den q an: ");
		q = erfasseDouble();
	}
	
	/** Liest double-Werte ein.
	  */
	private double erfasseDouble() throws IOException
	{
	  BufferedReader eingabe = new BufferedReader (new InputStreamReader (System.in));
	  return Double.parseDouble(eingabe.readLine());
	}
	
	/** Schreibt die komplette Gleichung auf den Bildschirm.
	  */	
	void schreibeGleichung() throws IOException
	{
		System.out.println("Ihre quadratische Funktion lautet: 0 = x^2 + " + p + (" x + ") + q);
	}
	
	/** Rechnet die Diskriminante aus, die zur Bestimmung der Lösungsmenge nötig ist.
	  */
	void bestimmeDiskriminante() throws IOException
	{
		D = (p * p / 4) - q;
	}
	
	/** Bestimmt mögliche Lösungen für alle 3 Fälle. 
		*/
	void bestimmeLoesungen() throws IOException   
	{											
	  if (D < 0)																	
		{
			x = -(p / 2) + Math.sqrt(D);
		}
		
		if (D == 0)
		{
			x = -(p / 2) + Math.sqrt(D);
		}
		
		if (D > 0)
		{
			x1 = -(p / 2) + Math.sqrt(D);
			x2 = -(p / 2) - Math.sqrt(D);
		}
	}
	
	/** Gibt die Anzahl der Lösungen und die möglichen Lösungen auf 8 Stellen nach dem Komma gerundet aus. */
	void schreibeLoesungen() throws IOException
	{
		DecimalFormat Rundung = new DecimalFormat("#.########");
		
		if (D < 0)
		{
			System.out.println("Die Gleichung hat keine reellen Loesungen");
		}
		
		if (D == 0)	
		{
			System.out.println("Die Gleichung hat eine reelle Loesung.");
			System.out.println("x =" + Rundung.format(x));
		}	
		
		if (D > 0)
		{
			System.out.println("Die Gleichung hat zwei reelle Loesungen.");
			System.out.println("x1 = " + Rundung.format(x1));
			System.out.println("x2 = " + Rundung.format(x2));
		}
	}
}
```


```
gruß.Necko();
```


----------



## Beni (13. Nov 2004)

Du kannst doch ein if machen?


```
if( istLoesbar() ){
  if( x1 > x2 ){
    ...
  }
  else{
    ...
  }
}
```


----------



## Fienchen (14. Nov 2004)

OK um da jetzt mal richtig verwirrung reinzubringen:
Mien Code sieght so aus.

```
public class Quadgleichung
double p;
double q;

public Quadgleichung (double KoeffP, double koeffQ) //Konstruktor 
{
p=koeffp;
q=koeffq;
}

boolean istLoesbar ()
{
return (Math.sqrt (((p/2)*(p/2))-q)>=0);
}

boolean istEindeutigLösbar()
{
return (Math.sqrt (((p/2)*(p/2))-q)<=0);
}

float Loesung1 ()
{ 
float MAX_INFINITY (((-p/2)+ Math.sqrt ((p/2)*(p/2))-q),  (((-p/2)+ Math.sqrt ((p/2)*(p/2))-q)); // Und genau da kommen tausende Fehlermeldungen...
```


----------



## comp89 (14. Nov 2004)

wenn  ich mir das jetzt schnell anschau

es fehlen viele { z.B. in zeile 2
zeile 8 wird auch nicht funktionieren, weil java groß und kleinbuchstaben unterscheidet


```
public Quadgleichung (double KoeffP, double koeffQ) //Konstruktor 
p=koeffp;
```

loesung1 hat kein return (float)


----------



## Fienchen (14. Nov 2004)

ja, sorry hab mich vertippt aber im prinzipiellenm geht es mir sowieso darum was ich amchen kann damit float Loesung funktioniert.


----------



## 8ull23y3 (15. Nov 2004)

http://theohhh.i-networx.de/Prog/pq.jar

schau mal hier ist schon feddich


----------

