namespace Verifica_Ripasso; class Program { const int MESI_IN_UN_ANNO = 12; static void Main(string[] args) { Console.Clear(); //dichiarazione e inizializzazione variabili int scelta, mediaPresenzeGennaioMarzo, mediaPresenzeGiugnoAgosto; int[] arrayPresenze = null; bool opzione1 = false; string meseConMaggioriPresenze = null; //menu ciclico do { Console.WriteLine("Inserire un'opzione:"); Console.WriteLine("1. Inserire le presenze"); Console.WriteLine("2. Mostra presenze"); Console.WriteLine("3. Mostra mese con maggiori presenze"); Console.WriteLine("4. Media presenze gennaio-marzo e giugno-agosto"); Console.WriteLine("5. Mostra mesi con presenze superiori alla media"); Console.WriteLine("6. Lancio dei dadi"); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); scelta = Convert.ToInt32(Console.ReadLine()); switch (scelta) { case 0: break; case 1: Console.Clear(); arrayPresenze = NumeroPresenze(arrayPresenze); opzione1 |= true; Pausa(); break; case 2: Console.Clear(); if (opzione1) { StampaArray(arrayPresenze); } else { Console.WriteLine("Bisogna inserire il numero di presenze prima di mostrarle"); } Pausa(); break; case 3: Console.Clear(); if (opzione1) { meseConMaggioriPresenze = NumeroPresenzeMaggiore(arrayPresenze); Console.WriteLine("Il mese con maggiori presenze è il mese di " + meseConMaggioriPresenze); } else { Console.WriteLine("Bisogna inserire il numero di presenze prima di mostrarle"); } Pausa(); break; case 4: Console.Clear(); if (opzione1) { mediaPresenzeGennaioMarzo = mediaPresenzeTreMesi(arrayPresenze, SwitchMese("gennaio"), SwitchMese("marzo")); mediaPresenzeGiugnoAgosto = mediaPresenzeTreMesi(arrayPresenze, SwitchMese("giugno"), SwitchMese("agosto")); Console.WriteLine("Media 1: " + mediaPresenzeGennaioMarzo); Console.WriteLine("Media 2: " + mediaPresenzeGiugnoAgosto); } else { Console.WriteLine("Bisogna inserire il numero di presenze prima di mostrarle"); } Pausa(); break; case 5: Console.Clear(); if (opzione1) { MesiSopraLaMedia(arrayPresenze); } else { Console.WriteLine("Bisogna inserire il numero di presenze prima di mostrarle"); } Pausa(); break; case 6: Console.Clear(); LancioDelDado(); Pausa(); break; default: Console.WriteLine("Opzione non valida"); Pausa(); break; } } while (scelta != 0); } static void Pausa() { Console.WriteLine("Premere un tasto per continuare. . ."); Console.ReadKey(); Console.Clear(); } static string SwitchMese(int p_NumeroMese) { string nomeMese = null; switch (p_NumeroMese) //L'indice dell'array sta ad indicare il numero del mese. Per non confondere l'utente dicendogli che gennaio è il mese 0, eseguo le operazioni con indiceInserimento-1 { case 1: nomeMese = "gennaio"; break; case 2: nomeMese = "febbraio"; break; case 3: nomeMese = "marzo"; break; case 4: nomeMese = "aprile"; break; case 5: nomeMese = "maggio"; break; case 6: nomeMese = "giugno"; break; case 7: nomeMese = "luglio"; break; case 8: nomeMese = "agosto"; break; case 9: nomeMese = "settembre"; break; case 10: nomeMese = "ottobre"; break; case 11: nomeMese = "novembre"; break; case 12: nomeMese = "dicembre"; break; } return nomeMese; } static int SwitchMese(string p_NomeMese) { int numeroMese = 0; switch (p_NomeMese) { case "gennaio": numeroMese = 1; break; case "febbraio": numeroMese = 2; break; case "marzo": numeroMese = 3; break; case "aprile": numeroMese = 4; break; case "maggio": numeroMese = 5; break; case "giugno": numeroMese = 6; break; case "luglio": numeroMese = 7; break; case "agosto": numeroMese = 8; break; case "settembre": numeroMese = 9; break; case "ottobre": numeroMese = 10; break; case "novembre": numeroMese = 11; break; case "dicembre": numeroMese = 12; break; } return numeroMese; } static int[] NumeroPresenze(int[] p_arrayPresenze) { //dichiarazione e inizializzazione variabili int input, indiceInserimento, postiDisponibili; string nomeMese = null; p_arrayPresenze = new int[MESI_IN_UN_ANNO]; Console.Write("Quanti posti sono disponibili? "); postiDisponibili = Convert.ToInt32(Console.ReadLine()); for (indiceInserimento = 1; indiceInserimento <= MESI_IN_UN_ANNO; indiceInserimento++) { nomeMese = SwitchMese(indiceInserimento); //L'indice dell'array sta ad indicare il numero del mese. Per non confondere l'utente dicendogli che gennaio è il mese 0, eseguo le operazioni con indiceInserimento-1 do { Console.Write("Quanti ospiti sono presenti nel mese di " + nomeMese + "? "); input = Convert.ToInt32(Console.ReadLine()); if (input < 0) { Console.WriteLine("Non può essere inserito un numero di ospiti negativo"); Pausa(); } else if (input > postiDisponibili) { Console.WriteLine("Non ci sono abbastanza posti per questo numero di ospiti"); Pausa(); } else { p_arrayPresenze[indiceInserimento - 1] = input; } } while (input < 0 || input > postiDisponibili); } return p_arrayPresenze; } static void StampaArray(int[] p_array) { for (int i = 0; i < p_array.Length; i++) { string nomeMese = SwitchMese(i + 1); Console.WriteLine("Ospiti per il mese di " + nomeMese + ": " + p_array[i]); } } static string NumeroPresenzeMaggiore(int[] p_array) { //dichiarazione e inizializzazione variabili int max = 0, indiceMax = 0; for (int i = 0; i < p_array.Length; i++) { if (p_array[i] > max) { max = p_array[i]; indiceMax = i; } } return SwitchMese(indiceMax + 1); } static int mediaPresenzeTreMesi(int[] p_array, int meseIniziale, int meseFinale) { //dichiarazione e inizializzazione variabili int media, somma = 0; for (int i = meseIniziale - 1; i < meseFinale; i++) { somma += p_array[i]; } media = somma / 3; return media; } static void MesiSopraLaMedia(int[] p_array) { //dichiarazione e inizializzazione variabili int somma = 0, media; for (int i = 0; i < MESI_IN_UN_ANNO; i++) { somma += p_array[i]; } media = somma / MESI_IN_UN_ANNO; for (int i = 0; i < MESI_IN_UN_ANNO; i++) { if (p_array[i] > media) { Console.WriteLine(SwitchMese(i + 1)); } } } static void LancioDelDado() { //dichiarazione e inizializzazione variabili const int FACCE_DEL_DADO = 6; int r, somma = 0, facciaPrecedente = 0; Random caso = new Random(); do { r = caso.Next(1, FACCE_DEL_DADO + 1); Console.WriteLine("Faccia del dado: " + r); somma += r; if (somma > 50) { break; } else if (facciaPrecedente == FACCE_DEL_DADO && r == FACCE_DEL_DADO) { break; } facciaPrecedente = r; } while (true); } } }