namespace average_countdown; class Program { static void Main(string[] args) { //dichiarazione e inizializzazione variabili ulong num, i, j; double numMedia, media, somma; string scelta; const string valoreAccettato1="S"; const string valoreAccettato2="s"; const string valoreAccettato3="N"; const string valoreAccettato4="n"; const string valoreAccettato5="Y"; const string valoreAccettato6="y"; const string valoreAccettato7=""; do{ //input e input sanitization do{ Console.Write("Inserire un numero per iniziare il conto alla rovescia: "); num=Convert.ToUInt64(Console.ReadLine()); if(num<=0){ Console.WriteLine("Il numero non può essere né negativo né zero"); } } while(num<=0); //stampa dei numeri for(i=num;i>0;i--){ Console.WriteLine(i); } Console.WriteLine("0"); //hack per avere lo zero a fine stampa, visto che con il tipo int64 non posso verificare che sia maggiore di -1 Console.WriteLine("Inserire una serie di numeri per calcolarne la media"); j=0; //reset del contatore somma=0; //reset della somma do{ //input e input sanitization do{ Console.Write("Inserire un numero: "); numMedia=Convert.ToUInt64(Console.ReadLine()); if(numMedia<0){ Console.WriteLine("Il numero non può essere negativo"); } } while(numMedia<0); somma=numMedia+somma; //calcolo somma j++; //conteggio numeri inseriti fin'ora } while(numMedia!=0); media=somma/(j-1); //calcolo media. j-1 serve altrimenti viene conteggiato l'inserimento dello zero e viene una media sbagliata Console.WriteLine("La media è " +media); //richiesta di reiterare do{ Console.Write("Ripetere il countdown e la media? [S/n] "); scelta=Console.ReadLine(); } while(scelta!=valoreAccettato1 && scelta!=valoreAccettato2 && scelta!=valoreAccettato3 && scelta!=valoreAccettato4 && scelta!=valoreAccettato5 && scelta!=valoreAccettato6 && scelta!=valoreAccettato7); //Riduzione dell'input accettato. } while(scelta!=valoreAccettato3 && scelta!=valoreAccettato4); //Solo con n o N viene interrotta l'esecuzione, quindi se non viene inserito nulla il programma ricomincia } }