diff --git a/Program.cs b/Program.cs index 584d238..fd25cdc 100644 --- a/Program.cs +++ b/Program.cs @@ -19,7 +19,7 @@ class Program { string[] numeriditelefono = new string[DIMENSIONE_RUBRICA]; Voce singolavoce = null; Voce[] voci = new Voce[DIMENSIONE_RUBRICA]; - Rubrica? rubrica = null; + Rubrica rubrica = new Rubrica(DIMENSIONE_RUBRICA); do { Console.WriteLine("1)Aggiungi nuova voce in rubrica"); Console.WriteLine("2)Ricerca esatta per nome"); @@ -93,7 +93,7 @@ class Program { } } while (nomeesatto.Length > 40 || check2 == true); - messaggio = rubrica.EsistenzaNomeEsatto(nomeesatto, contatore); + messaggio = rubrica.Ricerca(nomeesatto, true, contatore); Console.WriteLine(messaggio); } break; @@ -116,7 +116,7 @@ class Program { } } while (nomeapprossimato.Length > 40 || check2 == true); - rubrica.EsistenzaNomeApprosimato(nomeapprossimato, contatore); + rubrica.Ricerca(nomeapprossimato, false, contatore); } break; case 4: @@ -170,7 +170,7 @@ class Program { if (VerificaCorrettezza(p_stringa, p_tipologia)) { ritorno = p_tipologia ? "Il nome non può contenere numeri" : "Numero di telefono non valido"; } - if (p_contatore != 0 && p_rubrica != null) { + if (p_contatore != 0) { if (p_rubrica.Contains(p_stringa)) { ritorno = $"Questo {(p_tipologia ? "nome" : "numero di telefono")} esiste già nella rubrica."; } diff --git a/Rubrica.cs b/Rubrica.cs index c296417..ec3140e 100644 --- a/Rubrica.cs +++ b/Rubrica.cs @@ -3,8 +3,8 @@ namespace Rubrica_Miglioria; class Rubrica { Voce[] vocidellarubrica; - public Rubrica(Voce[] p_vocidellarubrica) { - this.vocidellarubrica = p_vocidellarubrica; + public Rubrica(int p_dimensione) { + this.vocidellarubrica = new Voce[p_dimensione]; } public void Setvocidellarubrica(Voce[] p_vocidellarubrica) { @@ -13,29 +13,20 @@ class Rubrica { public Voce[] GetVocidellarubrica() { return this.vocidellarubrica; } - public string EsistenzaNomeEsatto(string p_nomeesatto, int p_contatore) { - string nomedellarubrica = ""; - string numeroditelefonodellarubrica = ""; - string messaggio = "non esiste il nome " + p_nomeesatto + " all'interno della rubrica"; - for (int i = 0; i < p_contatore; i++) { - nomedellarubrica = this.vocidellarubrica[i].GetNome(); - if (p_nomeesatto == nomedellarubrica) { - messaggio = "esiste il nome " + p_nomeesatto + " all'interno della rubrica" + "e il suo numero di telefono è " + (numeroditelefonodellarubrica = this.vocidellarubrica[i].Getnumeroditelefono()); - break; - } - } - return messaggio; - } - public void EsistenzaNomeApprosimato(string p_nomeapprosimato, int p_contatore) { - string nomedellarubrica = ""; - string numeroditelefonodellarubrica = ""; - for (int i = 0; i < p_contatore; i++) { - nomedellarubrica = this.vocidellarubrica[i].GetNome(); - if (nomedellarubrica.StartsWith(p_nomeapprosimato)) { - Console.WriteLine("esiste il nome " + nomedellarubrica + " e il suo numero di telefono è: " + (numeroditelefonodellarubrica = this.vocidellarubrica[i].Getnumeroditelefono())); - } + + public string Ricerca(string p_ricerca, bool p_tipologia, int p_contatore) { + /* + p_tipologia=true -> ricerca esatta + p_tipologia=false -> ricerca non esatta + */ + bool notFound = true; + int i = 0; + for (; i < p_contatore && notFound; i++) { + notFound = !(p_tipologia ? p_ricerca == this.vocidellarubrica[i].GetNome() : this.vocidellarubrica[i].GetNome().StartsWith(p_ricerca)); } + return !notFound ? $"Voce trovata:\nNome: {this.vocidellarubrica[i].GetNome()}\nNumero di telefono: {this.vocidellarubrica[i].Getnumeroditelefono()}" : $"Il nome {p_ricerca} non è stato trovato nella rubrica."; } + public void StampaRubricaCompleta(int p_contatore) { string nomedellarubrica = ""; string numeroditelefonodellarubrica = "";