1206 divpoly Division von zwei Polynomen
Kategorie:Mathematik
Klasse:schwer
Eingabe:String
Ausgabe:String
Abzugebende Files: divpoly.txt, divpoly.java

Kurzbeschreibung:

Es sollen 2 Polynome durcheinander dividiert, und Ergebnis sowie Rest ausgegeben werden.

Allgemeine Hinweise:

Aufgabenstellung:

Entwickeln Sie ein Programm, welches zwei Polynome in Stringform einliest.

Bsp. für ein solches Polynom: x2-3x+2

Es bedeutet dabei 'x2' -> x hoch 2 ; 2 ist der Grad des Gliedes '3x' -> 3 mal x ; 3 ist der Koeffizient des Gliedes

Die durchzuführende Polynomdivision erfolgt analog zur Division zweier Zahlen.
Hier ein Beispiel:

Das Ergebnis ist x2-3x+2 und der Rest beträgt x .

Vorgangsweise:
Ermitteln Sie zuerst, wie oft das erste Glied des Nenner-Polynoms (2x) im ersten Glied des Zähler-Polynoms (2x3) enthalten ist ( -> x2). Dies ist zugleich der erste Teil der Lösung.
Das Nenner-Polynom wird nun mit dem erhaltenen Wert multipliziert ( -> 2x3+x2), die Vorzeichen werden invertiert ( -> -2x3-x2) und das Ergebnis vom Zähler-Polynom subtrahiert. Das ergibt im obigen Bsp. (-6x2+2x+2).
Nun werden dieselben Vorgänge weiter wiederholt, bis das Ergebnis der Subtraktion kleiner als das Nenner-Polynom ist. Der verbleibende Ausdruck ist der Rest der Division.

Eingabedaten:

Lesen Sie die beiden Polynome als Strings ein.
Der Grad der Polynome soll 1 stellig sein (0-9) und die Koeffizienten der einzelnen Glieder (ganzzahlig) maximal 3 stellig.
Die eingelesenen Strings sollen max. 40 Zeichen lang sein.
Die Polynome sollen in oben beschriebener Form eingegeben werden.
Erlaubte Zeichen: Ziffern (0-9), '+', '-', und 'x' Das Nenner-Polynom darf nicht höheren Grades sein als das Zähler-Polynom.

Ausgabedaten:

Bei korrekten Eingaben soll Ihr Programm das Ergebnis der Division und den durch ein Leerzeichen getrennten Divisionsrest ausgeben (gefolgt von einem Zeilenvorschub).
Ist der Divisionsrest Null so geben Sie 0 aus.
Die Ergebnis-Polynome sollen nach Koeffizienten absteigend sortiert werden.

Fehlerbehandlung:

Sämtliche Eingabedatensätze sind immer vollständig einzulesen. Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt (z.B. zweites Polynom gleich 0) oder erfüllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
2x3-5x-2+2x+2 2x+1

2x3-5x2+2x+2 2x+1

Ausgabedaten
FALSCHE EINGABE

x2-3x+2.5 -0.5

Bemerkung: Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

java divpoly < divpoly.i1 > divpoly.out1

Das erzeugte File divpoly.out1 können Sie dann mit dem mitgelieferten Outputfile divpoly.o1 vergleichen.