Zahlenratespiel von Stroustrup
-
Ich glaube du meinst eher so:
#include "std_lib_facilities.h" // vorgefertigte Datei für das Buch int main() // C++-Programme beginnen mit der Ausführung von main { char qst = 'n'; int high = 100; int low = 1; int middle = 50; while (low != high) { cout << "kleiner oder gleich " << middle << " ? (j,n)\n"; cin >> qst; if (qst == 'j') { high = (high+low)/2; middle =((high-low)/2)+low; } else if (qst == 'n') { low = ((low+high)/2)+1; middle = ((high-low)/2)+low; } else cout << "Falsche Eingabe!\n"; } cout << "Zahl ist " << middle << endl; return 0; }
-
Eigentlich hab ich die Aufgabe immer noch nicht...
Verwenden Sie die Operatoren < und <=
in meinem Programm kommen die nicht einmal vor.
-
Naja, falls die Aufgabe wirklich so gemeint ist, dann hast du mit deiner fleißigen Tipparbeit von ~500 Zeilen eh schon gezeigt, daß du's kannst.
Vorschlag:
#include <iostream> using std::cout; using std::cin; int main() { char qst; // = 'n'; nee. unsiniger Wert zur Initialisierung int low = 1; int high = 100; do { cout << "kleiner oder gleich " << low + (high - low) / 2 << " ? (j,n)\n"; cin >> qst; if (qst == 'j') high = (low + high) / 2; else if (qst == 'n') low = (low + high) / 2 + 1; else cout << "Falsche Eingabe!\n"; } while(low != high); cout << "Zahl ist " << low << /* endl nee, flushen brauchts wirklich nicht */ '\n'; // return 0; unnoetig. main() gibt immer 0 zurueck wenn sie nichts zurueckgibt. }// edit: haesslichkeiten entfernt
-
Swordfish schrieb:
char qst; // = 'n'; nee. unsiniger Wert zur InitialisierungBin sehr dankbar, daß Du ihn nicht initialisierst.
Hab dafür ein Kopf-Makro:
#define "nee, unsinnig zu initialisieren" "tu mal lokaler machen"
, das klappt fast immer.
-
volkard schrieb:
Bin sehr dankbar, daß Du ihn nicht initialisierst.
Hey, hast Du mir beigebracht!

volkard schrieb:
#define "nee, unsinnig zu initialisieren" "tu mal lokaler machen"
Ja. Sorry, Kopf-Praeprozessor nicht drueberlaufenlassen.
@pauledd: tu mal lokaler machen!
-
@Swordfish
Das "do{}" hatte ich noch nicht in dem Buch,ich werde sicherlich im Laufe des Buches noch darauf stoßen und vielen Dank für die Vorschläge und Hinweise auch von den anderen.
Ich werde jetzt mal die nächsten Übungen durchmachen.@pauledd: tu mal lokaler machen!
Was meinst du? Soll ich sächsisch Schreiben?
-
pauledd schrieb:
@pauledd: tu mal lokaler machen!
Was meinst du? Soll ich sächsisch Schreiben?
Variablen so lokal wie möglich deklarieren:
{ char ch; { { cin >> ch; } } }vs.
{ { { char ch; cin >> ch; } } }
-
ah verstehe, so nah wie möglich an die Verwendungsstelle.
-
Genau: So nah wie möglich, so fern wie nötig.
-
Swordfish schrieb:
Hey, hast Du mir beigebracht!

Danke für die Rückmeldung. Das freut mich.
Und es motiviert mich doppelt, da ich gerade hier auch sehen darf, daß Du einer der wenigen bist, der in der Lage ist, noch einfachen Code zu schreiben, was ich klasse finde, und ich vielleicht unter Umständen daran mitgeholfen haben könnte.