//Autor : Thorstensen Nicolas //MatrikelNummer : 0006402 //BeispielNummer : 1201 //Beschreibung : Eine Polynomfunktion soll beliebig oft differenziert werden // reformated with idea (www.intellij.com) by heder import eprog.EprogException; import eprog.EprogIO; class polydiff { static boolean EingabeEnde = false; //bestimmmt das ende der eingabe, wenn der Wert 999 eingegeben wird static boolean SpezError = false; // sollte Exception error auftreten wird diese Variable auf True geaendert static boolean InputError = false; static final int MAX = 11; // Hoechste zugelassen Anzahl Koeffizienten static final int Upperlimit = 9; //KLassenvariable die den hoechst zugelassenen Grad des Polynoms fixieren static final int Lowerlimit = 0;//Klassenvariable um den niedrigste Potenz des Polynoms zu fixieren static final int Ende = 0; static int Grad = 0; //bestimmt den Grad des Polynoms static int N = 0; //wie oft differenzieren static float Eingabe = 0; //Diese Float Variable dient der Speicherung der Eingabe int ElementGrad = 0; //Objektvariable fur das Objekt Polydiff, welche den Grad speichert float ElementKoeff = 0;//Objektvariable fuer das Objekt Polydiff, welche den Koeffizienten speichert polydiff(int i, float j) //Hier wird das Objekt Polydiff definiert, welches zwei Eingabeparameter verlangt { this.ElementGrad = i; this.ElementKoeff = j; } void Differezieren() //Hier wird die Methode definiert um ein Objekt, bzw Polynom zu differenzieren { if (ElementGrad == 0) ElementKoeff = 0; ElementKoeff = ElementKoeff * ElementGrad; ElementGrad -= 1; } public static void main(String[] args) { try { Grad = EprogIO.readInt(); //Hier wird der Grad des Polynoms eingelesen if ((Grad < Lowerlimit) || (Grad > Upperlimit))//Hier wird ueberprueft,ob der Grad> Limit { SpezError = true; Grad = 0;//Grad wird auf null gestzt um Fehler bei den Arrays zu vermeiden falls <0 } N = EprogIO.readInt();//Eingelesen wie oft der Polynom differenziert werden soll if ((N < 0)) InputError = true; } catch (EprogException e) // ExceptionError abgefangen und InputError auf true gesetzt { InputError = true; } float[] KoeffArray = new float[MAX];//Hier wird ein Array definiert um die Koeffizientten zuspeichern try { int i = 0; while (KoeffArray[i] != 999) { Eingabe = EprogIO.readFloat(); //Hier werden die Koeffizienten eingelesen und gespeichert KoeffArray[i] = Eingabe; if (KoeffArray[i] == 999) break; i++; } } catch (EprogException e) //Hier wird ein ExceptionError abgefangen und InputError auf true gesetzt { InputError = true; } polydiff[] Elemente = new polydiff[Grad + 1]; //Hier wird ein Array Elemente mit Polydiff Objekten definiert for (int i = 0; i <= Grad; i++) { Elemente[i] = new polydiff((Grad - i), KoeffArray[i]);//Hier werden neue Polydiff Objekte mit den entsprechenden Parametern definiert } for (int j = 0; j < N; j++) //Hier wird jedes Objekt des Array Elemente N-mal differenziert { for (int i = 0; i < Grad + 1; i++) Elemente[i].Differezieren(); } if (InputError) /* AUSGABE */ EprogIO.print("?"); else if (SpezError) EprogIO.print("FALSCHE EINGABE"); else if (N > Grad) EprogIO.print(0 + " " + 0.000F); else { EprogIO.print(Elemente[0].ElementGrad); for (int i = 0; i <= Grad; i++) { if (Elemente[i].ElementGrad >= 0) EprogIO.print(" " + Elemente[i].ElementKoeff); else break; } } EprogIO.println(""); } }