Nel primo codice basta scrivere

codice:
	if (i==0)
	{
		printf("\nInput non valido!!\n");
		while(getchar()!='\n');
	}
Complimenti..intendevo proprio così..ma puoi spiegarmi il perchè di
codice:
while(getchar()!='\n');
In pratica ignora tutti i caratteri finchè non viene premuto l'invio?Perchè è necessario ignorarli?

Inoltre ho provato a fare la stessa cosa con cin (C++)...però nella riga in cui faccio
codice:
i = cin >> n; //ho provato anche a mettere i = (cin >> n)
mi dice "Invalid conversion from void to int"...
Ho provato ad esplicitare un cast..ma mi da errore dicendomi in pratica che non posso "castare" ..

Forse non è questa la strada da adottare..suggerimenti?