Ich bin ja nicht so, und hab das obige Programm (meiner Meinung nach C)
in Delphi umgewandelt.
Entweder hab ich irgendetwas falsch gemacht, oder der Algorhythmus ist einfach nur schlecht.
Das Prog benötigt immer 7 Durchläufe, um auf die gesuchte Zahl zu kommen. Entweder ist es gewollt, oder ich habe tatsächlich etwas übersehen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Button1Click(Sender: TObject); var iZufall : Integer; iRechteGrenze : Integer; iLinkeGrenze : Integer; iIntervall : Integer; begin randomize(); iAnzahl := 0; iZufall := Random(100)+1; iRechteGrenze := 128; iLinkeGrenze := 1; iIntervall := iRechteGrenze; Label2.Caption := IntToStr(iZufall);
repeat iIntervall := iIntervall div 2; if (iLinkeGrenze <= iZufall) And (iZufall < (iLinkeGrenze + iIntervall)) then iRechteGrenze := iLinkeGrenze + iIntervall else iLinkeGrenze := iRechteGrenze - iIntervall; label4.Caption := IntToStr(iLinkeGrenze); label6.Caption := IntToStr(iRechteGrenze); until iIntervall <= 1; label8.Caption := IntToStr(iLinkeGrenze); end; |
Edit : Hab mal die Vorschläge von Peter Lustig umgesetzt, sehe aber keine
Veränderung. Es bleiben 7 Durchläufe.
Mit Java hingegen hat er recht, was eigentlich peinlich ist, da ich gerade ein Buch mit Java-Beispielen lese.

(Naja, manchmal sieht man den Wald vor lauter Bäumen nicht).