namespace concessionaria; class Program { static void Main(string[] args) { Console.Clear(); int scelta, dimensione; Auto[] listaAuto = null; do { Console.WriteLine("Inserire una scelta"); Console.WriteLine("1. Crea concessionaria"); Console.WriteLine("2. Stampa dati auto"); Console.WriteLine("3. Promozione primavera"); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); scelta = Convert.ToInt32(Console.ReadLine()); switch (scelta) { case 0: break; case 1: Console.Clear(); do { Console.Write("Quante auto sono presenti? "); dimensione = Convert.ToInt32(Console.ReadLine()); if (dimensione <= 0) { Console.WriteLine("Non è possibile considerare un numero di auto minore o uguale a zero"); Pausa(); } } while (dimensione <= 0); listaAuto = new Auto[dimensione]; for (int i = 0; i < dimensione; i++) { Console.WriteLine($"Inserimento dati auto n. {i + 1}"); listaAuto[i] = CreaAuto(); } Pausa(); break; case 2: Console.Clear(); if (listaAuto == null) { Console.WriteLine("È necessario specificare almeno un'auto creando la concessionaria prima di visualizzarne i dati."); } else { for (int i = 0; i < listaAuto.Length; i++) { Console.WriteLine($"Auto n. {i + 1}:\n"); listaAuto[i].StampaDatiAuto(); Console.WriteLine(); } } Pausa(); break; case 3: Console.Clear(); if (listaAuto == null) { Console.WriteLine("È necessario specificare almeno un'auto creando la concessionaria prima di applicare la promozione."); } else { Sconto(listaAuto); Console.WriteLine("Sconto applicato."); } 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 Auto CreaAuto() { string targa, marca, modello; int cavalli, bollo, prezzo; bool controlloTarga; Auto auto; do { Console.Write("Inserire la targa: "); targa = Console.ReadLine(); controlloTarga = ControlloTarga(targa); if (!controlloTarga) { Console.WriteLine("Targa non valida."); Pausa(); } } while (!controlloTarga); Console.Write("Inserire la marca: "); marca = Console.ReadLine(); Console.Write("Inserire il modello: "); modello = Console.ReadLine(); do { Console.Write("Inserire i cavalli: "); cavalli = Convert.ToInt32(Console.ReadLine()); if (cavalli <= 0) { Console.WriteLine("Numero di cavalli non valido."); Pausa(); } } while (cavalli <= 0); do { Console.Write("Inserire il prezzo: "); prezzo = Convert.ToInt32(Console.ReadLine()); if (prezzo <= 0) { Console.WriteLine("Prezzo non valido."); Pausa(); } } while (prezzo <= 0); auto = new Auto(targa, marca, modello, cavalli, prezzo); auto.SetBollo(); return auto; } static bool ControlloTarga(string targa) { //Formato targa accettato: AB123CD bool ritorno = true; const int LUNGHEZZA = 7; if (targa.Length != LUNGHEZZA) { ritorno = false; //la targa non è della lunghezza corretta } if (ritorno) { for (int i = 0; i < 2 && ritorno; i++) { if (!(char.IsLetter(targa[i]))) { ritorno = false; } } if (ritorno) { for (int i = 2; i < 5 && ritorno; i++) { if (!(char.IsNumber(targa[i]))) { ritorno = false; } } if (ritorno) { for (int i = 5; i < 7 && ritorno; i++) { if (!(char.IsLetter(targa[i]))) { ritorno = false; } } } } } return ritorno; } static void Sconto(Auto[] p_listaAuto) { const int SCONTO_THRESHOLD = 15000; const int SCONTO_1 = 5; const int SCONTO_2 = 10; for (int i = 0; i < p_listaAuto.Length; i++) { if (p_listaAuto[i].GetPrezzo() <= SCONTO_THRESHOLD) { p_listaAuto[i].SetPrezzo(p_listaAuto[i].GetPrezzo() - (p_listaAuto[i].GetPrezzo() * SCONTO_1) / 100); } else { p_listaAuto[i].SetPrezzo(p_listaAuto[i].GetPrezzo() - (p_listaAuto[i].GetPrezzo() * SCONTO_2) / 100); } } } }