Zahlenratenprogramm will nicht so recht

Die Aufgabe war nen Programm zu schreiben, dass ne Zahl zwischen 1 und 100 errät.
Ich denke grundsätzlich stimmts bei mir aber die Schleife bricht nicht ab, wenn ich z.B. am Ende zig mal die 1 drücke. Ich dachte das Problem hätte ich mit den Hilfsvariablen b und c gelöst, funktioniert aber trotzdem nicht.
Wenn mir einer helfen könnte wärs nett.
Greg

#include<iostream>
using namespace std;
int main() {
cout<< "Denken sie sich eine Zahl zwischen 1 und 100" << endl;
int x=0;
int y=100;
int z=50;
int a;
int b;
int c;
while ((x!=y)||(b!=y)||(c!=x))
{ z=(x+y)/2;

cout<< "Ist ihre Zahl groesser gleich als " << z << " geben sie 1 ein ansonsten 2 ." << endl;
cin>> a;
if (a==1)
{ b=x;
x=z;
}
else
y=z;
c=y;

}
if (cin.fail())
cout<< "Versuchs das naechste Mal mit ner Zahl " << endl;
else
cout<< "Ist ihre Zahl " << z << "?" << endl;
system ("pause");
return 0;

}
 
Code-Tags wären schön.

Code:
#include<iostream>

using namespace std;

int main() 
{
  cout<< "Denken sie sich eine Zahl zwischen 1 und 100" << endl;
  
  int untereGrenze = 0;
  int obereGrenze = 100;
  
  while (untereGrenze != obereGrenze - 1)
  { 
    int mittelwert = (obereGrenze + untereGrenze) / 2;
    int auswahl = 0;

    cout<< "Ist ihre Zahl groesser gleich als " << mittelwert << " geben sie 1 ein ansonsten 2 ." << endl; 
    cin >> auswahl;
    
    if (cin.fail())
    {
      cout<< "Versuchs das naechste Mal mit ner Zahl " << endl;
      return 1;
    }
    
    if (1 == auswahl)
      untereGrenze = mittelwert;
    else 
      obereGrenze = mittelwert;
  } 
  
  cout<< "Ist ihre Zahl " << untereGrenze << "?" << endl;
  return 0;
}

Ein kleiner Tipp für die Zukunft: Aussagekräftige Namen für Variablen erleichtern es nicht nur anderen, sondern insbesondere auch dir, den Code zu lesen. Und es gibt einige schöne Statistiken die besagen, dass man Quellcode erheblich öfter liest als schreibt, was ebenso meiner persönlichen Erfahrung entspricht. Von dem her rentiert es sich auf jeden Fall etwas mehr Zeit beim Tippen zu investieren.

mfg benediktibk
 
Zurück
Oben