Hausübung 7

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster » 6. Dez 2007 18:42

Kann es sein, dass die Zeile in Tests.java

Code: Alles auswählen

System.out.println(poly2.toString()+" should be +10x^4+20x^3+8x^2+4x^1+10");
eigentlich

Code: Alles auswählen

System.out.println(poly2.toString()+" should be +10x^4+20x^3+8x^2+4x^1+7");
heißen müsste?

Alle anderen Ausgaben sind bei mir
nämlich so, wie sie sein sollten.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

gismo
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 10. Jan 2007 17:06
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von gismo » 6. Dez 2007 19:04

Ich denke mal, du beziehst dich auf die Zeile:

Code: Alles auswählen

poly2 = poly1.add(poly1);
Folglich ist die Antwort auf deine Frage: Nein.

Grund: Poly 2 = Poly1+Poly1

==>
5x^4+10x^3+4x^2+2x^1+5
+5x^4+10x^3+4x^2+2x^1+5
------------------------------------
10x^4+20x^3+8x^2+4x^1+10

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster » 6. Dez 2007 19:49

Habe den Fehler in meinem
Code gefunden.

Danke!
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster » 6. Dez 2007 20:48

Da die findX-Prozedur nur
mit ganzen Zahlen probieren
kann (egal mit welcher Implementierung),
gibt es eine Endlosschleife, wenn
das X eine Gleitkommazahl ist.

Gibt es dafür Punktabzug?

Kann ich davon ausgehen, dass
die integer-Zahl irgendwann
ins negative kippt, wie das
in C++ der Fall ist?

Ich fange nämlich bei 0 an
zu prüfen. Wenn das x also -1
ist, dann werden erst alle Zahlen
von 0 bis MAX_INT getestet, dann
sollte die integer-Zahl kippen und
von MIN_INT bis 0 suchen.

Nicht gerade effizient ;) aber es
funktioniert. (Für ganze Zahlen)
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

gismo
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 10. Jan 2007 17:06
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von gismo » 6. Dez 2007 21:18

Hi, da x laut Aufgabenstellung nur ganzzahlig sein kann, brauchst du dir auch keine Sorgen um eine Endlosschleife bei eine Gleitkommazahl machen.
==> Folglich auch kein Punktabzug (es stehen einfach beim aktuellen Vorlesungsstand noch nicht die Mittel zur Verfügung eine allgemeine Berechnung durchzuführen)

Bei dem Zahlenbereich ist die Implementierung durchaus korrekt.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster » 6. Dez 2007 21:29

Ok. Danke.

Ich bin nur etwas verunsichert, da die
Funktionsfähigkeit meiner Prozeduren
sehr von den Eingangsdaten abhängen.

Z.B. gehe ich davon aus, dass die Terme
immer mit absteigenden Exponenten
an meinen Konstruktor übergeben werden
und dass nicht mehrere Terme mit dem
selben Exponent übergeben werden.

Außerdem gehe ich bei der
Addition und Subtraktion davon aus,
dass man nicht zwei Polynome unterschied-
lichen Grads addieren/subtrahieren will.

Ich fände es besser, wenn immer
explizit angegeben wird, in welchem
Format und in welcher Reihenfolge
bei den Tests die Parameter an den
Konstruktor übergeben werden und
welche Spezialfälle man im Code abfangen
muss.

//edit
Ich habe außerdem angenommen,
dass die Terme innerhalb von Polynomial
frei zugänglich und nicht versteckt sind.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

gismo
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 10. Jan 2007 17:06
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von gismo » 6. Dez 2007 21:50

Sagen wir es so, theoretisch müsste man alles abfangen... da das aber die erste Hausübung zum Thema Java ist und diese nun auch nicht mehrere Tage ein Fulltime-Job sein soll, müssen Spezialfälle nicht behandelt werden, wenn Sie nicht in der Aufgabe explizit angegeben worden sind (z.B. Verhalten bei der P/Q-Formel).

Die Terme bei der Addition haben keinen höheren Grad als 4 (siehe Aufgabe 6, welche als Vorbereitung für die HÜ gedacht ist).

Terme in Polynomial sollten auch gemäß den Prinzipien von Information Hiding behandelt werden.

EDIT: Im Allgemeinen kann man davon ausgehen, dass die eigene Implementierung ganz gut ist, wenn die mitgelieferten Testfälle alle durchlaufen.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster » 6. Dez 2007 22:08

Ok. Danke!

Gut, dass ich nochmal
nachgefragt habe ;)
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Wambolo
Computerversteher
Computerversteher
Beiträge: 381
Registriert: 18. Okt 2007 11:36

Beitrag von Wambolo » 9. Dez 2007 21:43

wer lesen kann ist klar im Vorteil, meine Frage hat sich in Luft aufgelöst, sorry für den sinnlosen beitrag

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Beitrag von Osterlaus » 10. Dez 2007 15:34

Irgendwie kommen wir bei der Polynomaddition nicht weiter. Was für einen Ansatz sollten wir wählen, um beispielsweise 1+x+x^2+x^3+x^4 zu x^5(etc) zu addieren? In meiner derzeitigen Implementation ist jeder Term einzeln in der Klasse gespeichert, also als Term a, Term b,... - und wie hau ich die nun zusammen? Geht das einfacher als über ziemlich dreckiges Vergleichen, da läufts dann ja auf den ersten Blick auf 25 Vergleiche hinaus...

gismo
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 10. Jan 2007 17:06
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von gismo » 10. Dez 2007 15:44

Bei der Addition von 2 Polynomen mit Grad 4 kommt auch nur ein Polynom mit Grad 4 heraus, von daher gibts kein x^5

Wie weiter vorne schon geschrieben: Eingangspolynome haben immer Grad 4 (siehe Aufgabe 6)

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Beitrag von Osterlaus » 10. Dez 2007 15:48

Du hast meine Frage nicht verstanden. Ich addiere ein Polynom von Grad 4 zu einem anderen mit mindestens Grad 5 - was kommt da raus?

In Aufgabe 6 steht auch nur, dass die Ausgangspolynome höchstens Grad 4 haben, was in den Tests schon widerlegt wird. Können wir davon ausgehen, dass in den Tutoren-Tests immer die gleiche Reihenfolge eingehalten wird?

//edit: Ausgangspolynome sind natürlich die Eingabe, sry, vergiss den Satz. Damit ist das Problem dann auch schon recht gelöst.

gismo
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 10. Jan 2007 17:06
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von gismo » 10. Dez 2007 16:01

Ich habe die Frage schon verstanden, du hast meine Antwort anscheinend nicht verstanden...

Es gibt keine Addtition von Grad 4 mit Grad 5.
Der maximale Grad ist laut Aufgabenstellung nunmal Grad 4.

Bzgl. der Tests, dann gib bitte mal an, wo das widerlegt wird.

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Beitrag von Osterlaus » 10. Dez 2007 16:08

Wie ich nacheditiert habe: Ich habe dich falsch verstanden und weiß nun in Ansätzen, wie es gehen muss.

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Beitrag von Osterlaus » 11. Dez 2007 15:20

Krümelmonster hat geschrieben:Da die findX-Prozedur nur
mit ganzen Zahlen probieren
kann (egal mit welcher Implementierung),
gibt es eine Endlosschleife, wenn
das X eine Gleitkommazahl ist.
In der Aufgabenstellung steht, dass X ganzzahlig ist.
Krümelmonster hat geschrieben:Ich fange nämlich bei 0 an
zu prüfen. Wenn das x also -1
ist, dann werden erst alle Zahlen
von 0 bis MAX_INT getestet, dann
sollte die integer-Zahl kippen und
von MIN_INT bis 0 suchen.
Ich habe mir grade folgendes überlegt. In Mathe gehen wir ja auch davon aus, dass solche Werte meist in einem engen Bereich um die 0 liegen. Warum also nicht so prüfen: 0, 1, -1, 2, -2, 3, -3,... Eine möglichst effiziente Implementierung überlasse ich dir ;)

PS: Warum brichst du deine Texte eigentlich immer so komisch manuell um?

Antworten

Zurück zu „Archiv“