diff --git a/Program.cs b/Program.cs index e09ab7d..24f054f 100644 --- a/Program.cs +++ b/Program.cs @@ -6,6 +6,7 @@ class Program { Console.Clear(); int scelta = 0; Voce[] rubrica = new Voce[100]; //tetto massimo di voci possibili nella rubrica + int indice = 0; do { Console.WriteLine("Inserire un'opzione:"); @@ -23,7 +24,7 @@ class Program { case 0: break; case 1: - CreaVoce(rubrica); + CreaVoce(rubrica, indice++); Pausa(); break; case 2: @@ -55,10 +56,9 @@ class Program { Console.ReadKey(); } - static void CreaVoce(Voce[] p_rubrica) { + static void CreaVoce(Voce[] p_rubrica, int p_indice) { bool error; string scelta; - int indiceVoce = TrovaProssimaPosizioneDisponibile(p_rubrica); string nome; string cognome; string telefono; @@ -71,6 +71,7 @@ class Program { const string EMAIL = "^[\\w.-]+@([\\w-]+\\.)+[\\w-]{2,4}$"; const string CONFERMA = "[SsYy]"; const string NEGAZIONE = "[Nn]"; + string[] voce; do { Console.Write("Inserire il nome della persona: "); @@ -209,25 +210,19 @@ class Program { } while (error); - if (indiceVoce == -1) { + if (p_indice == p_rubrica.Length) { Console.WriteLine("Errore: la rubrica è piena."); } else { - p_rubrica[indiceVoce] = new Voce(nome, cognome, telefono, cellulare, email, indirizzo); - Console.WriteLine("Voce creata con successo."); - } - } - - static int TrovaProssimaPosizioneDisponibile(Voce[] p_rubrica) { - bool exit = false; - int i; - for (i = 0; i < p_rubrica.Length && exit; i++) { - if (p_rubrica[i] == null) { - exit = true; + voce = [nome, cognome, telefono, cellulare, email, indirizzo]; + if (!DoesVoceExist(p_rubrica, voce)) { + p_rubrica[p_indice] = new Voce(nome, cognome, telefono, cellulare, email, indirizzo); + Console.WriteLine("Voce creata con successo."); + } + else { + Console.WriteLine("Errore: la voce esiste già."); } } - - return !exit ? i : -1; } static void MostraRubrica(Voce[] p_rubrica) { @@ -241,4 +236,17 @@ class Program { } } } + + static bool DoesVoceExist(Voce[] p_rubrica, string[] p_voce) { + bool esiste = false; + for (int i = 0; i < p_rubrica.Length && p_rubrica[i] != null && !esiste; i++) { + for (int j = 2; j < p_voce.Length && !esiste; j++) { + if (p_voce[j] == p_rubrica[i].GetVoceAsArray()[j]) { + esiste = true; + } + } + } + + return esiste; + } } diff --git a/Voce.cs b/Voce.cs index 5d8b156..5ef7439 100644 --- a/Voce.cs +++ b/Voce.cs @@ -25,4 +25,8 @@ class Voce { Console.WriteLine($"\tEmail: {this.email}"); Console.WriteLine($"\tIndirizzo: {this.indirizzo}"); } + + public string[] GetVoceAsArray() { + return [this.nome, this.cognome, this.telefono, this.cellulare, this.email, this.indirizzo]; + } } \ No newline at end of file diff --git a/bin/Debug/net9.0/vacanzeEstive_rubricaTelefonica.dll b/bin/Debug/net9.0/vacanzeEstive_rubricaTelefonica.dll index f60129b..a643575 100644 Binary files a/bin/Debug/net9.0/vacanzeEstive_rubricaTelefonica.dll and b/bin/Debug/net9.0/vacanzeEstive_rubricaTelefonica.dll differ diff --git a/bin/Debug/net9.0/vacanzeEstive_rubricaTelefonica.pdb b/bin/Debug/net9.0/vacanzeEstive_rubricaTelefonica.pdb index 9388257..0cd42f6 100644 Binary files a/bin/Debug/net9.0/vacanzeEstive_rubricaTelefonica.pdb and b/bin/Debug/net9.0/vacanzeEstive_rubricaTelefonica.pdb differ diff --git a/obj/Debug/net9.0/ref/vacanzeEstive_rubricaTelefonica.dll b/obj/Debug/net9.0/ref/vacanzeEstive_rubricaTelefonica.dll index c0416da..fdad86e 100644 Binary files a/obj/Debug/net9.0/ref/vacanzeEstive_rubricaTelefonica.dll and b/obj/Debug/net9.0/ref/vacanzeEstive_rubricaTelefonica.dll differ diff --git a/obj/Debug/net9.0/refint/vacanzeEstive_rubricaTelefonica.dll b/obj/Debug/net9.0/refint/vacanzeEstive_rubricaTelefonica.dll index c0416da..fdad86e 100644 Binary files a/obj/Debug/net9.0/refint/vacanzeEstive_rubricaTelefonica.dll and b/obj/Debug/net9.0/refint/vacanzeEstive_rubricaTelefonica.dll differ diff --git a/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.AssemblyInfo.cs b/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.AssemblyInfo.cs index 1fb835c..7d9b09b 100644 --- a/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.AssemblyInfo.cs +++ b/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.AssemblyInfo.cs @@ -13,10 +13,10 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("vacanzeEstive_rubricaTelefonica")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+394c4e4012c619345c24a8351853ea1ad8a0dc6b")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+adcd853d065d0f5ee33305ce879ad3ab6c752998")] [assembly: System.Reflection.AssemblyProductAttribute("vacanzeEstive_rubricaTelefonica")] [assembly: System.Reflection.AssemblyTitleAttribute("vacanzeEstive_rubricaTelefonica")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -// Generated by the MSBuild WriteCodeFragment class. +// Generato dalla classe WriteCodeFragment di MSBuild. diff --git a/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.AssemblyInfoInputs.cache b/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.AssemblyInfoInputs.cache index c3cd307..7acb339 100644 --- a/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.AssemblyInfoInputs.cache +++ b/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.AssemblyInfoInputs.cache @@ -1 +1 @@ -fb0d1ec8b0274d7315e8b09e330ec685e30dd469f5d8fc537973ed9c1d3cad12 +81cb16105158fc67677a8f34f6d4634cc420d130cc85cba0f787d235cb911b77 diff --git a/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.dll b/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.dll index f60129b..a643575 100644 Binary files a/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.dll and b/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.dll differ diff --git a/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.pdb b/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.pdb index 9388257..0cd42f6 100644 Binary files a/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.pdb and b/obj/Debug/net9.0/vacanzeEstive_rubricaTelefonica.pdb differ