Seite 1 von 1

Praktikum 2 - Wurzelberechnung von Ganzzahlen

Verfasst: 27. Nov 2009 11:31
von mister_tt
Moin,

Versuche gerade, hinter den BinarySearch-Algo zu kommen. Dafür gucke ich mir den zunächst mal auf Ganzzahlen an. Habe das Ding jetzt erstmal in Java implementiert... Dabei fällt mir auf, dass der Algo nur funktioniert, wenn man beim Vergleich <= und nicht < benutzt (wenn man entscheidet, ob bi gleich 0 oder gleich 1 sein muss)...
Wenn ich da '<' benutze, bekomme ich sqrt(9) = 2 raus und sqrt(16) = 3 raus usw... Und das ist ja mal offensichtlich falsch... Wenn ich keine Quadratzahlen eingebe, kommen identische Ergebnisse raus (egal ob ich < oder <= benutze)...

Für Hilfe wäre ich dankbar.
Grüße,
Simon

Re: Praktikum 2 - Wurzelberechnung von Ganzzahlen

Verfasst: 27. Nov 2009 13:12
von swezorke
Du kannst dir das folgendermaßen vorstellen:

Dein bi ist so ein Wert auf den du was aufaddierst und schaust, ob das bi^2 immer noch in dein x "reinpasst".
Das tut es genau dann, wenn bi^2 <= x.
Wenn du jetzt bsp. x=4 hast, dann prüfst du ja mal, ob bi = 2^2 "hineinpasst". Mit einem < würdest du feststellen, dass nicht und letztlich als Ergebnis 1 herausbekommen.
Tatsächlich könntest du, wenn du feststellst, dass bi^2 = x, die gesamte Schleife abbrechen, weil du ja bereits das Ergebnis (bi) gefunden hast.

Hoffe das bringt dich einigermaßen weiter.

Gruß Stephan

Re: Praktikum 2 - Wurzelberechnung von Ganzzahlen

Verfasst: 27. Nov 2009 13:36
von mister_tt
Ich glaube ich verstehe, worauf du hinaus willst... Wenn ich das mit einem < implementiere, muss ich halt innerhalb der if-Abfrage nochmal auf Gleichheit prüfen und ggf. schon das Ergebnis zurückgeben... Die Reihenfolge ist da natürlich wurscht, wobei das mit dem return effizienter wäre...

Nichtsdestotrotz ist dann m.E. die Erklärung in der Aufgabenstellung falsch. Denn da wird ein '<' benutzt, ohne dass die Rede von einer Prüfung auf Gleichheit ist und das funktioniert m.E. nicht.

Viele Grüße und Danke,
Simon

Re: Praktikum 2 - Wurzelberechnung von Ganzzahlen

Verfasst: 27. Nov 2009 16:32
von hm
Ein Vergleich mit \(\le\) loest doch die Probleme. Meinem Verstaendnis nach handelt es sich um einen Typo - oder hat jemand ein Gegenbeispiel bzw. ich was falsch verstanden?

Re: Praktikum 2 - Wurzelberechnung von Ganzzahlen

Verfasst: 28. Nov 2009 01:50
von mister_tt
Ja das habe ich ja geschrieben - mit <= funzt es...

Ein Typo... ??? ... :?:

Re: Praktikum 2 - Wurzelberechnung von Ganzzahlen

Verfasst: 28. Nov 2009 11:53
von hm
Rechtschreibfehler...

Re: Praktikum 2 - Wurzelberechnung von Ganzzahlen

Verfasst: 28. Nov 2009 16:53
von mister_tt
:idea: achso ^^