Das Problem liegt in den Funktionen stringumw und ausrechnung, die müssen dafür verantwortlich sein, dass der Wert nicht übereinstimmt.
Ja, da liegt der Fehler. Hast du die Funktionen mal seperat mit verschiedenen Werten getestet oder auf einem Stück Papier durchgerechnet?
Mir ist auch nicht ganz klar, warum du überhaupt eine String->Int-Umwandlung im Programm hast, anstatt direkt in einen int einzulesen. Genauso wie es dir bingo88 schon vorgeschrieben hatte:
http://extreme.pcgameshardware.de/1815201-post16.html
Und jetzt gehen wir mal durch, was du in der Funktion stringumw bzw. ausrechnung geschrieben hast:
1. Der User gibt in den std::string ratezahl seine geratene Zahl ein (zb. "123").
2. in ausrechnung wandelt atoi den String "123" in einen int um und in int ratezahl2 steht jetzt der Wert 123.
Ist 123 in ratezahl2 nicht genau der Wert, den du haben wolltest?
Die ganzen Berechnungen, die du dann noch ausführst, sind mir nicht klar.
Es sind auch sonst noch ein paar kleine Fehler drin, wie hier: while (exit=true);
Schau noch mal nach, wie bingo88 das in seinem Programm geschrieben hat.
Die Struktur wird noch mal leicht überarbeitet, die globalen Variablen sollen aber so bleiben, ausser ihr bringt ein K.O. Argument dagegen.
Also ein K.O. Argument gegen globale Variablen in deinem jetzigen Programm nicht unbedingt.
Aber wenn Programmieren mal mehr werden soll als ein Zeitvertreib, dann solltest du so früh wie möglich damit anfangen, dir einen guten Stil anzueignen. Und eine Regel guten Stils ist es, eine Variable so lokal wie möglich zu definieren.
Globale Variablen bringen mehr Ärger als Nutzen.