namespace biblioteca; class Program { static void Main(string[] args) { Console.Clear(); const int MAX_LIBRI = 10; int scelta, j; Libro[] biblioteca = new Libro[MAX_LIBRI]; bool oggettoEsistente, nomeEsistente, casaEditriceEsistente; string casaEditrice, nome; do { Console.WriteLine("Inserire un'opzione:"); Console.WriteLine("1. Crea biblioteca"); Console.WriteLine("2. Mostra biblioteca"); Console.WriteLine("3. Mostra libro"); Console.WriteLine("4. Applica sconto"); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); scelta = Convert.ToInt32(Console.ReadLine()); switch (scelta) { case 0: break; case 1: CreaBiblioteca(biblioteca); Pausa(); break; case 2: oggettoEsistente = true; for (int i = 0; i < biblioteca.Length && oggettoEsistente; i++) { if (biblioteca[i] == null) { oggettoEsistente = false; } } if (!oggettoEsistente) { Console.WriteLine("Errore: è necessario creare la biblioteca prima di mostrarla."); } else { for (int i = 0; i < biblioteca.Length; i++) { Console.WriteLine($"Libro {i + 1}:"); biblioteca[i].StampaLibro(); Console.WriteLine(); } } Pausa(); break; case 3: oggettoEsistente = true; for (int i = 0; i < biblioteca.Length && oggettoEsistente; i++) { if (biblioteca[i] == null) { oggettoEsistente = false; } } if (!oggettoEsistente) { Console.WriteLine("Errore: è necessario creare la biblioteca prima di mostrare un libro."); } else { do { Console.WriteLine("Scegliere il numero di scaffale:"); for (int i = 0; i < biblioteca.Length; i++) { Console.WriteLine($"{i}"); } Console.Write("Scelta: "); scelta = Convert.ToInt32(Console.ReadLine()); if (scelta < 0 || scelta > biblioteca.Length) { Console.WriteLine("Numero di scaffale non valido."); Pausa(); } } while (scelta < 0 || scelta > biblioteca.Length); biblioteca[scelta].StampaLibro(); } Pausa(); break; case 4: oggettoEsistente = true; for (int i = 0; i < biblioteca.Length && oggettoEsistente; i++) { if (biblioteca[i] == null) { oggettoEsistente = false; } } if (!oggettoEsistente) { Console.WriteLine("Errore: è necessario creare la biblioteca prima di applicare lo sconto ad un libro."); } else { Console.WriteLine("Scegliere un nome:"); for (int i = 0; i < biblioteca.Length; i++) { biblioteca[i].GetNome(); Console.WriteLine(); } Console.Write("Nome: "); nome = Console.ReadLine(); Console.WriteLine("Scegliere una casa editrice:"); for (int i = 0; i < biblioteca.Length; i++) { biblioteca[i].GetCasaEditrice(); Console.WriteLine(); } Console.Write("Casa editrice: "); casaEditrice = Console.ReadLine(); nomeEsistente = false; casaEditriceEsistente = false; for (j = 0; j < biblioteca.Length && !nomeEsistente && !casaEditriceEsistente; j++) { nomeEsistente = biblioteca[j].GetNome() == nome; casaEditriceEsistente = biblioteca[j].GetCasaEditrice() == casaEditrice; } if (!nomeEsistente || !casaEditriceEsistente) { Console.WriteLine($"Nessun libro di nome {nome} di casa editrice {casaEditrice} esistente."); } else { biblioteca[j].ApplicaSconto(); } } 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(); } static void CreaBiblioteca(Libro[] p_biblioteca) { string nome; double prezzo; int numeroScaffale; int numeroPagine; string casaEditrice; for (int i = 0; i < p_biblioteca.Length; i++) { Console.Write("Inserire il titolo del libro: "); nome = Console.ReadLine(); do { Console.Write("Inserire il prezzo del libro:"); prezzo = Convert.ToDouble(Console.ReadLine()); if (prezzo <= 0) { Console.WriteLine("Errore: il prezzo non può essere minore o uguale a zero."); Pausa(); } } while (prezzo <= 0); do { Console.Write("Inserire il numero di pagine del libro:"); numeroPagine = Convert.ToInt32(Console.ReadLine()); if (numeroPagine <= 0) { Console.WriteLine("Errore: il numero di pagine non può essere minore o uguale a zero."); Pausa(); } } while (numeroPagine <= 0); Console.Write("Inserire la casa editrice: "); casaEditrice = Console.ReadLine(); do { Console.WriteLine("Scegliere il numero di scaffale:"); for (int j = 0; j < p_biblioteca.Length; j++) { Console.WriteLine($"{j}"); } Console.Write("Scelta: "); numeroScaffale = Convert.ToInt32(Console.ReadLine()); if (numeroScaffale < 0 || numeroScaffale > p_biblioteca.Length) { Console.WriteLine("Numero di scaffale non valido."); Pausa(); } if (p_biblioteca[numeroScaffale] != null) { Console.WriteLine("Scaffale occupato, sceglierne un altro."); Pausa(); } } while (numeroScaffale < 0 || numeroScaffale > p_biblioteca.Length || p_biblioteca[numeroScaffale] != null); p_biblioteca[numeroScaffale] = new Libro(nome, prezzo, Convert.ToString(numeroScaffale), Convert.ToString(numeroPagine), casaEditrice); } } }