Salve gente sono un principiante alle prime armi e ho scritto questo programma; funziona e non mi da errori, tuttavia quando torna nello stato di "Idle" e gli dico di uscire, non sempre funziona, soprattutto se ci arrivo dallo stato "Game". Qualche consiglio?
P.S.: a volte faccio passaggi inutili, come azzerare due volte la stessa variabile...scusate ma sono alle prime armi...



#include<iostream>
#include<math.h>
using namespace std ;

int x,j,n,v, maxrand = 30;

void Idle(); // è lo stato in cui mi chiede se voglio giocare
void Number(); // è lo stato nel quale devo mettere il numero
void Game(); // è lo stato che mi dice se ho indovinato o meno
void Start (); // è lo stato di presentazione




void
Idle ()
{ x = 0;
n = 0;
j = 0;
cout << "\n Se vuoi giocare premi 1 altrimenti scrivi 2 \n ";
cin >> n ;
if ( n == 1 )
{ j = rand() % maxrand;
Start () ;
}
else
{
system ("Pause");
}

}


void
Number ()
{
cin >> x;
Game();

}


void
Game ()

{ if ( v > 1 )

{ if ( x > j)
{
cout << " \n Il numero scritto e' troppo grande.\n Hai ancora " << v - 1 << " vite.\n Riprova \n " << endl;
v = v - 1;
Number();
}


else if (x < j)
{
cout << "\n Il numero scritto e' troppo piccolo.\n Hai ancora " << v - 1 << " vite.\n Riprova. \n " << endl;
v = v - 1;
Number ();
}

else

cout << "\n Bene hai indovinato!! \n " << endl;
Idle();

}
else

cout << " \n Hai perso \n ";
n == 0;
Idle();


}









void
Start ()
{ n = 0;
v = 5;
cout << "Ciao e benvenuto a indovina il numero. \n Lo scopo del gioco e' indovinare un numero.\n Io ti diro' se il numero che hai scritto e' piu' grande o \n piu' piccolo di quello da indovinare.\n Il numero da indovinare va da 0 a 30. \n Hai 5 vite.\n Scrivi ora il numero \n";
Number (); }










int main()

{ n = 0;
Idle ();
if ( n == 1)
{ Start ();
n=0;
}

else return 0;
}