namespace biblioteca; class Program { static void Main(string[] args) { Console.Clear(); const int MAX_LIBRI = 10; int scelta, input, i = 0; Libro[] biblioteca= new Libro[MAX_LIBRI]; bool oggettoEsistente; (double, bool) ritornoRiempimento; Dispenser elementoRiempimento; Console.Write("Quanti dispenser considerare? "); input = Convert.ToInt32(Console.ReadLine()); dispensers = new Dispenser[input]; do { Console.WriteLine("Inserire un'opzione:"); Console.WriteLine("1. Crea biblioteca"); Console.WriteLine("2. Mostra biblioteca"); Console.WriteLine("3. Mostra libro"); Console.WriteLine("4. Applca sconto"); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); scelta = Convert.ToInt32(Console.ReadLine()); switch (scelta) { case 0: break; case 1: Console.Clear(); dispensers[i] = new Dispenser(); i++; Console.WriteLine("Dispenser standard creato."); Pausa(); break; case 2: Console.Clear(); if (i > dispensers.Length - 1) { Console.WriteLine($"Errore: non si possono creare più di {dispensers.Length} dispensers."); } else { do { Console.Write("Inserire la capienza del dispenser: "); capienza = Convert.ToDouble(Console.ReadLine()); if (capienza <= 0) { Console.WriteLine("Errore: la capienza del dispenser non può essere minore o uguale a zero."); } } while (capienza <= 0); do { Console.Write("Inserire la quantità erogata dal dispenser: "); quantitàErogata = Convert.ToDouble(Console.ReadLine()); if (quantitàErogata <= 0) { Console.WriteLine("Errore: la quantità erogata dal dispenser non può essere minore o uguale a zero."); } } while (quantitàErogata <= 0); do { Console.Write("Inserire la quantità contenuta dal dispenser: "); quantitàContenuta = Convert.ToDouble(Console.ReadLine()); if (quantitàContenuta <= 0) { Console.WriteLine("Errore: la quantità contenuta dal dispenser non può essere minore o uguale a zero."); } } while (quantitàContenuta <= 0); dispensers[i] = new Dispenser(quantitàErogata, quantitàContenuta, capienza); i++; } Pausa(); break; case 3: Console.Clear(); oggettoEsistente = true; for (int j = 0; j < dispensers.Length && oggettoEsistente; j++) { if (dispensers[j] == null) { oggettoEsistente = false; } } if (!oggettoEsistente) { Console.WriteLine("Errore: è necessario creare *tutti* i dispenser prima di mostrarli."); } else { for (int j = 0; j < dispensers.Length; j++) { Console.WriteLine($"Dispenser {j + 1}:"); dispensers[j].StampaDispenser(); Console.WriteLine(); } } Pausa(); break; case 4: Console.Clear(); quantitàRimasta = SelezionaDispenser(dispensers).Erogazione(); if (quantitàRimasta == 0) { Console.WriteLine("Il dispenser è vuoto."); } else { Console.WriteLine($"Quantità rimasta: {quantitàRimasta}"); } Console.WriteLine("Erogazione effettuata"); Console.WriteLine(); 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(); } }