diff --git a/Program.cs b/Program.cs index 3c641c9..d0e2789 100644 --- a/Program.cs +++ b/Program.cs @@ -24,12 +24,12 @@ class Program { break; case 2: Console.Clear(); - + ContaLettere(); Pausa(); break; case 3: Console.Clear(); - + Pausa(); break; case 4: @@ -65,10 +65,45 @@ class Program { if (daEsserCercato.Contains(trova)) { ritorno = daEsserCercato.Replace(trova, sostituisci); } - else{ + else { ritorno = $"Nessuna occorrenza di {trova} trovata in {daEsserCercato}"; } return ritorno; } + + static void ContaLettere() { + string daEsserCercato, stringa; + int vocali, consonanti; + + Console.Write("Inserire il testo in cui contare le lettere: "); + daEsserCercato = Console.ReadLine(); + + stringa = daEsserCercato.ToLower();//converto la stringa in caratteri minuscoli per semplificare la ricerca delle lettere dopo + + //Queste sono due addizioni lunghissime perché ho voluto cercare di usare solo i metodi delle stringhe e non convertire la stringa in array per la ricerca + vocali = CercaLettera(stringa, 'a') + CercaLettera(stringa, 'e') + CercaLettera(stringa, 'i') + CercaLettera(stringa, 'o') + CercaLettera(stringa, 'u'); + consonanti = CercaLettera(stringa, 'b') + CercaLettera(stringa, 'c') + CercaLettera(stringa, 'd') + CercaLettera(stringa, 'f') + CercaLettera(stringa, 'g') + CercaLettera(stringa, 'h') + CercaLettera(stringa, 'j') + CercaLettera(stringa, 'k') + CercaLettera(stringa, 'l') + CercaLettera(stringa, 'm') + CercaLettera(stringa, 'n') + CercaLettera(stringa, 'p') + CercaLettera(stringa, 'q') + CercaLettera(stringa, 'r') + CercaLettera(stringa, 's') + CercaLettera(stringa, 't') + CercaLettera(stringa, 'v') + CercaLettera(stringa, 'w') + CercaLettera(stringa, 'x') + CercaLettera(stringa, 'y') + CercaLettera(stringa, 'z'); + + Console.WriteLine($"La stringa {daEsserCercato} contiene {vocali} vocali e {consonanti} consonanti"); + } + + static int CercaLettera(string p_stringa, char p_lettera) { + int i = 0, ritorno = 0; + //creo un array per avere l'indice iniziale di ogni occorrenza del testo da trovare e lo riempio di -1 visto che sono indici non validi + int[] indiciOccorrenze = new int[p_stringa.Length]; + for (int j = 0; j < indiciOccorrenze.Length; j++) { + indiciOccorrenze[j] = -1; + } + + while (p_stringa.Contains(p_lettera)) {//finché c'è un'occorrenza + ritorno++;//conta quante occorrenze ci sono state + indiciOccorrenze[i] = p_stringa.IndexOf(p_lettera);//salva l'indice iniziale dell'occorrenza + p_stringa = p_stringa.Substring(indiciOccorrenze[i] + 1);//accorcia il testo per cercare oltre l'occorrenza appena trovata (1 serve per accorciare oltre la lettera) + i++; + } + return ritorno; + } + + } diff --git a/bin/Debug/net9.0/strings_1.dll b/bin/Debug/net9.0/strings_1.dll index b545acf..33e24e8 100644 Binary files a/bin/Debug/net9.0/strings_1.dll and b/bin/Debug/net9.0/strings_1.dll differ diff --git a/bin/Debug/net9.0/strings_1.pdb b/bin/Debug/net9.0/strings_1.pdb index ea7a123..bdd982a 100644 Binary files a/bin/Debug/net9.0/strings_1.pdb and b/bin/Debug/net9.0/strings_1.pdb differ diff --git a/obj/Debug/net9.0/ref/strings_1.dll b/obj/Debug/net9.0/ref/strings_1.dll index 719cf54..1a544cf 100644 Binary files a/obj/Debug/net9.0/ref/strings_1.dll and b/obj/Debug/net9.0/ref/strings_1.dll differ diff --git a/obj/Debug/net9.0/refint/strings_1.dll b/obj/Debug/net9.0/refint/strings_1.dll index 719cf54..1a544cf 100644 Binary files a/obj/Debug/net9.0/refint/strings_1.dll and b/obj/Debug/net9.0/refint/strings_1.dll differ diff --git a/obj/Debug/net9.0/strings_1.AssemblyInfo.cs b/obj/Debug/net9.0/strings_1.AssemblyInfo.cs index 998e8c8..08d44ad 100644 --- a/obj/Debug/net9.0/strings_1.AssemblyInfo.cs +++ b/obj/Debug/net9.0/strings_1.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("strings_1")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0c0dba09f56a880aa213506f9e689c9f02f72bc4")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9a6a7d033df24618f23d8c678ad89ad9da11fd5f")] [assembly: System.Reflection.AssemblyProductAttribute("strings_1")] [assembly: System.Reflection.AssemblyTitleAttribute("strings_1")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net9.0/strings_1.AssemblyInfoInputs.cache b/obj/Debug/net9.0/strings_1.AssemblyInfoInputs.cache index 56977f2..c7ccdbe 100644 --- a/obj/Debug/net9.0/strings_1.AssemblyInfoInputs.cache +++ b/obj/Debug/net9.0/strings_1.AssemblyInfoInputs.cache @@ -1 +1 @@ -04a8bffd0985b606c02f47e14af099392fb8a67f7a6b726a8ce22dfe96827131 +026fc32c5f2b08f1f28bf8d9d499576953af691b4c04f7de6e6d7956b19089a8 diff --git a/obj/Debug/net9.0/strings_1.dll b/obj/Debug/net9.0/strings_1.dll index b545acf..33e24e8 100644 Binary files a/obj/Debug/net9.0/strings_1.dll and b/obj/Debug/net9.0/strings_1.dll differ diff --git a/obj/Debug/net9.0/strings_1.pdb b/obj/Debug/net9.0/strings_1.pdb index ea7a123..bdd982a 100644 Binary files a/obj/Debug/net9.0/strings_1.pdb and b/obj/Debug/net9.0/strings_1.pdb differ