In realtà volevo sapere perché le righe che ho scritto all'inizio (ossia quelle che dichiaro "facenti parti del codice" inserito dopo) fossero state scritte in quel modo.

il punto è che in tal modo il programma non va in loop infinito, e posso premere un tasto per uscire o qualunque altro per continuare, e non mi dà alcun tipo di errore.

La parte a cui mi riferivo è comunque

codice:
 int main()
 {
 int res;
 char again;
 do
 {
 res = primo();
 if (res) return res;
 cout << "\nPremi c per continuare o qualunque altro tasto per terminare. ";
 cin >> again;
 } 
 while (again == 'c');
 return 0;
 }
così la metto completa!
Il programma in questo modo fa quello che ho detto prima..

da notare che senza questa parte, il programma fa il suo lavoro e poi esce sempre. Era solo per capire perchè e come funzionasse..