On Friday 25 October 2002 12:55, Thorsten Haude wrote:
* Christoph Maurer
[02-10-25 14:29]: Am Fre, 25 Okt 2002 schrieb Thorsten Haude:
* Christoph Maurer
[02-10-25 14:04]: Eine Idee wäre vielleicht
if ((double)zahl/2 == zahl/2.) gerade...
Aber ob Du dividieren darfst, weiß ich natürlich nicht...
Mit Floats und Vergleichen wäre ich vorsichtig. Der Vergleich oben kann durchaus auch bei geraden Zahlen falsch sein.
/2. sollte doch schon weitgehend eindeutig beantwortet werden,
Sollte? Wenn sich ein Integer nicht exakt als Float darstellen läßt, gibt es einen Fehler.
Das ist allerdings korrekt. :-) Aber welches hirntote FP-Format gibt es, dessen Darstellungsbereich den Anforderungen für den Typen double genügt, dabei aber ganze Zahlen nicht auch als ganze Zahlen darstellen kann? Was die Division durch 2 betrifft, hoffe ich, dass wir schon noch von klassischen Binärrechnern reden. Ansonsten: Lösungsvorschlag weiter unten.
aber man kann ja auch die Differenz prüfen, ob sie kleiner als irgendein Grenzwert ist
So geht's!
Auch ein Weg, ja. Es geht noch ineffizienter: Wie wäre es mit einer Schleife, die den Wert jeweils bis 0 ink- bzw. dekrementiert und dabei immer ein Flag toggelt, welches damit am Ende anzeigt, dass die Anzahl der Durchläufe gerade oder ungerade war? Richtig implementiert ist das sogar 100% portabel, denn es funktioniert dann auch bei Rechnern, die Zahlen nicht in Bits (lies: nicht binär) speichern. Es dauert dann halt ein Weilchen, bis man das Ergebnis hat... Nun ja. Die Antworten aus diesem Thread sollten dann wohl für die Lösung der Hausaufgabe mehr als reichen. :) Vinzent. -- Man is the only animal that blushes -- or needs to. -- Mark Twain