W
Generelle Ratschläge:
Definiere Variablen erst da, wo du sie brauchst, nicht global im Programm. Du hast in main 3 Variablen, zahl, lvl und lvl1. Überlege dir, ob du die wirklich überall in main brauchst.
Benenne Variablen ordentlich. Das macht dir das Leben leichter. zahl ist ein sehr allgemeiner Name, kann alles und nichts bedeuten. Wenn es die Benutzereingabe sein soll, wäre vielleicht geratene_zahl oder kandidat oder sowas leichter - noch besser irgendwas auf Englisch (guessed_number oder candidate, vielleicht auch nur guess). UND: den Bereich, wo diese Variable bekannt ist, klein halten, sodass man schon gleich sieht, was diese Zahl ist. Wenn der Scope dieser Variable nur wenige Zeilen lang ist, dann geht auch so ein generischer Name wie zahl. Schlimmer noch sind aber lvl und lvl1. Was unterscheidet die beiden? Ein besserer Name wäre zum Beispiel level. Wofür level1 stehen soll, weiß ich nicht. Deine Variable n könnte besser secret_number heißen. Benennung von Variablen ist wichtig und nicht immer leicht und wird gerne in seiner Wichtigkeit unterschätzt.
Schalte Warnungen des Compilers an. Du solltest dann Warnungen bekommen in der Art:<source>:25:22: warning: statement has no effect [-Wunused-value]
25 | lvl1 == 10;
| ~~~~~^~~~~
Das liegt einfach daran, dass ein Vergleich true oder false ergibt, du das Ergebnis aber einfach verwirfst. Du fragst also, ist lvl1 gleich 10, aber interessierst dich nicht für die Antwort.
else { NULL; }. Wofür soll das gut sein? Wer hat dir NULL beigebracht? In C++ verwende nullptr für einen Nullpointer und 0 wenn du die Zahl null meinst. Aber in diesem else-Zweig ist das ein weiteres Statement ohne Effekt.
und zuletzt, was die anderen gesagt haben. Versuche, kleine Funktionen für Teilaspekte deines Programms zu schreiben.