Compare commits
10 Commits
aaad7bb706
...
5c28d72c77
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5c28d72c77 | ||
|
|
c485179de4 | ||
|
|
f14e6ba36e | ||
|
|
c3221a26e7 | ||
|
|
7a6ed48375 | ||
|
|
3335c6802a | ||
|
|
5a4246e15b | ||
|
|
4c40b38878 | ||
|
|
4b05cdf4d4 | ||
|
|
cf667c0c4c |
166
Program.cs
166
Program.cs
@ -1,4 +1,6 @@
|
||||
namespace strings_2;
|
||||
using System.Text;
|
||||
|
||||
namespace strings_2;
|
||||
|
||||
class Program {
|
||||
static void Main(string[] args) {
|
||||
@ -8,6 +10,7 @@ class Program {
|
||||
static void Menu() {
|
||||
Console.Clear();
|
||||
int scelta;
|
||||
string stringa;
|
||||
do {
|
||||
Console.WriteLine("Inserire un'opzione:");
|
||||
Console.WriteLine("1. Verifica parola palindroma");
|
||||
@ -24,7 +27,14 @@ class Program {
|
||||
break;
|
||||
case 1:
|
||||
Console.Clear();
|
||||
if (ParolaPalindroma()) {
|
||||
Console.Write("Inserire una parola: ");
|
||||
stringa = Console.ReadLine();
|
||||
if (stringa.Contains(' ')) {
|
||||
Console.WriteLine("È consentito inserire solo una parola. Per inserire una frase scegliere l'opzione 2.");
|
||||
Pausa();
|
||||
break;
|
||||
}
|
||||
if (Palindromo(stringa)) {
|
||||
Console.WriteLine("La parola è palindroma");
|
||||
}
|
||||
else {
|
||||
@ -34,22 +44,28 @@ class Program {
|
||||
break;
|
||||
case 2:
|
||||
Console.Clear();
|
||||
|
||||
Console.Write("Inserire una frase: ");
|
||||
if (Palindromo(Console.ReadLine())) {
|
||||
Console.WriteLine("La frase è palindroma");
|
||||
}
|
||||
else {
|
||||
Console.WriteLine("La frase non è palindroma");
|
||||
}
|
||||
Pausa();
|
||||
break;
|
||||
case 3:
|
||||
Console.Clear();
|
||||
|
||||
Console.Clear();
|
||||
ContaStringa();
|
||||
Pausa();
|
||||
break;
|
||||
case 4:
|
||||
Console.Clear();
|
||||
|
||||
Input4();
|
||||
Pausa();
|
||||
break;
|
||||
case 5:
|
||||
Console.Clear();
|
||||
|
||||
PariEDispari();
|
||||
Pausa();
|
||||
break;
|
||||
default:
|
||||
@ -61,6 +77,7 @@ class Program {
|
||||
while (scelta != 0);
|
||||
}
|
||||
|
||||
|
||||
static void Pausa() {
|
||||
Console.WriteLine("Premere un tasto per continuare. . .");
|
||||
Console.ReadKey();
|
||||
@ -84,19 +101,52 @@ class Program {
|
||||
return p_array;
|
||||
}
|
||||
|
||||
static bool ParolaPalindroma() {
|
||||
string stringa;
|
||||
static bool Palindromo(string stringa) {
|
||||
bool ritorno;
|
||||
char[] metà1, metà2;
|
||||
do {
|
||||
Console.Write("Inserire una parola: ");
|
||||
stringa = Console.ReadLine().ToLower(); //convertita in minuscolo per identificare palindromi case insensitive
|
||||
if (stringa.Contains(' ')) {
|
||||
Console.WriteLine("È consentito inserire solo una parola. Per inserire una frase scegliere l'opzione 2.");
|
||||
Pausa();
|
||||
|
||||
//modifica della stringa per trasformarla in una sequenza di lettere ASCII
|
||||
{
|
||||
stringa = stringa.ToLower();//convertita in minuscolo per identificare palindromi senza distinzione tra maiuscole e minuscole
|
||||
|
||||
//converto la stringa inserita da codifica Unicode a codifica ASCII
|
||||
//******************************************************************************************************************************************************************************//
|
||||
{
|
||||
Encoding ascii = Encoding.ASCII;
|
||||
Encoding unicode = Encoding.Unicode;
|
||||
char[] chars = stringa.ToCharArray();
|
||||
byte[] bytes = new byte[chars.Length];
|
||||
|
||||
for (int i = 0; i < chars.Length; i++) { //se il valore intero del singolo char è superiore al valore massimo di byte
|
||||
if (Convert.ToUInt64(chars[i]) > Byte.MaxValue) {
|
||||
chars[i] = Convert.ToChar(200); //lo sostituisco con un carattere a caso che è convertibile in byte, per non rompere la conversione successiva
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < chars.Length; i++) {
|
||||
bytes[i] = Convert.ToByte(chars[i]);
|
||||
}
|
||||
|
||||
Encoding.Convert(unicode, ascii, bytes);
|
||||
|
||||
for (int i = 0; i < chars.Length; i++) {
|
||||
chars[i] = Convert.ToChar(bytes[i]);
|
||||
}
|
||||
stringa = string.Join("", chars);
|
||||
}
|
||||
//******************************************************************************************************************************************************************************//
|
||||
|
||||
|
||||
//i numeri nei seguenti cicli for sono caratteri non lettere in codifica ASCII. I cicli separano i vari blocchi di questi caratteri da quelli con le lettere
|
||||
//******************************************************************************************************************************************************************************//
|
||||
for (int i = 0; i <= 96; i++) {
|
||||
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||
}
|
||||
for (int i = 123; i <= 127; i++) {
|
||||
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||
}
|
||||
//******************************************************************************************************************************************************************************//
|
||||
}
|
||||
while (stringa.Contains(' '));
|
||||
|
||||
//la divisione serve per escludere la lettera che divide perfettamente a metà la parola con lettere dispari
|
||||
if (stringa.Length % 2 == 0) {
|
||||
@ -105,10 +155,9 @@ class Program {
|
||||
}
|
||||
else {
|
||||
metà1 = stringa.Substring(0, stringa.Length / 2).ToCharArray(); //divido la stringa a metà, prendo la prima e la converto in array di char per riordinarne le lettere
|
||||
metà2 = stringa.Substring((stringa.Length / 2) + 1, stringa.Length / 2).ToCharArray(); //divido la stringa a metà, prendo la seconda e la converto in array di char per riordinarne le lettere
|
||||
metà2 = stringa.Substring((stringa.Length / 2) + 1, stringa.Length / 2).ToCharArray(); //divido la stringa a metà, prendo la seconda e la converto in array di char per riordinarne le lettere, salto una lettera perché quella centrale non mi interessa
|
||||
}
|
||||
|
||||
|
||||
string metàOrdinata1 = string.Join("", InsertionSort(metà1));//ordino la prima metà della stringa e la riconverto da array di char in stringa
|
||||
string metàOrdinata2 = string.Join("", InsertionSort(metà2));//ordino la secondo metà della stringa e la riconverto da array di char in stringa
|
||||
//le due metà prima vengono convertite in array di char per riordinarle, poi vengono convertite in stringa dopo essere state ordinate per calcolarne l'hash con il metodo integrato
|
||||
@ -121,4 +170,85 @@ class Program {
|
||||
}
|
||||
return ritorno;
|
||||
}
|
||||
|
||||
static void ContaStringa() {
|
||||
string daEsserCercato, stringa;
|
||||
int occorrenze;
|
||||
Console.Write("Inserire il testo in cui cercare: ");
|
||||
daEsserCercato = Console.ReadLine();
|
||||
|
||||
Console.Write("Inserire la frase da cercare: ");
|
||||
stringa = Console.ReadLine();
|
||||
|
||||
if (stringa.Length > daEsserCercato.Length) {
|
||||
Console.WriteLine("Errore: non è possibile cercare una frase più lunga in una più corta.");
|
||||
}
|
||||
|
||||
else {
|
||||
//converto in caratteri minuscoli per semplificare la ricerca
|
||||
occorrenze = CercaStringa(daEsserCercato.ToLower(), stringa.ToLower());
|
||||
|
||||
Console.WriteLine($"La stringa {daEsserCercato} contiene {stringa} {occorrenze} volte");
|
||||
}
|
||||
}
|
||||
|
||||
static int CercaStringa(string p_stringa1, string p_stringa2) {
|
||||
int ritorno = 0;
|
||||
|
||||
while (p_stringa1.Contains(p_stringa2)) {//finché c'è un'occorrenza
|
||||
ritorno++;//conta quante occorrenze ci sono state
|
||||
p_stringa1 = p_stringa1.Substring(p_stringa1.IndexOf(p_stringa2) + 1);//salva l'indice iniziale dell'occorrenza e accorcia il testo per cercare oltre l'occorrenza appena trovata (1 serve per accorciare oltre la lettera)
|
||||
}
|
||||
return ritorno;
|
||||
}
|
||||
|
||||
static void Input4() {
|
||||
char trova, sostituisci;
|
||||
string daEsserCercato, risultato;
|
||||
|
||||
Console.Write("Inserire il testo in cui cercare: ");
|
||||
daEsserCercato = Console.ReadLine();
|
||||
Console.Write("Inserire il carattere da cercare: ");
|
||||
trova = Convert.ToChar(Console.ReadLine());
|
||||
Console.Write("Inserire il carattere da sostituire: ");
|
||||
sostituisci = Convert.ToChar(Console.ReadLine());
|
||||
|
||||
risultato = Sostituisci(daEsserCercato, trova, sostituisci);
|
||||
|
||||
Console.WriteLine($"Testo dopo la sostituzione: {risultato}");
|
||||
}
|
||||
static string Sostituisci(string p_stringa1, char p_lettera1, char p_lettera2) {
|
||||
char[] lettere = p_stringa1.ToCharArray();
|
||||
|
||||
for (int j = 0; j < p_stringa1.Length; j++) {
|
||||
if (lettere[j] == p_lettera1) {
|
||||
lettere[j] = p_lettera2;
|
||||
}
|
||||
}
|
||||
|
||||
return string.Join("", lettere);
|
||||
}
|
||||
|
||||
static void PariEDispari() {
|
||||
string stringa;
|
||||
int i = 0;
|
||||
Console.Write("Inserire una frase: ");
|
||||
stringa = Console.ReadLine();
|
||||
|
||||
Console.Write("Lettere pari: ");
|
||||
while (i < stringa.Length) {
|
||||
Console.Write(stringa[i]);
|
||||
i = i + 2;
|
||||
}
|
||||
Console.WriteLine();
|
||||
|
||||
i = 1;
|
||||
Console.Write("Lettere dispari: ");
|
||||
|
||||
while (i < stringa.Length) {
|
||||
Console.Write(stringa[i]);
|
||||
i = i + 2;
|
||||
}
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -13,7 +13,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("strings_2")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+97c65ade8e1a0e7e912b959c732d32df692d42e4")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c485179de4f282de45beb0f7d4860f49264ae15c")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("strings_2")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("strings_2")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
@ -1 +1 @@
|
||||
049a95f073c2bbaacb9a0f60962811b08e9cd32894ba1b07148583ce8cae646e
|
||||
37bc26bc3a12bdfd7035317c818bc790bd05aef4e0e1da67c548b475df3f0a61
|
||||
|
||||
Binary file not shown.
@ -1 +1 @@
|
||||
4ef1c6e281a4279efbe6a93ea283d646bf9f249445f7fe51ef3162564a07b622
|
||||
db9d59f3f1e01603ca0db2532b95debe9b6ee3fc1ae01815ceaef6628a6d1799
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -44,7 +44,7 @@
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.100"
|
||||
"SdkAnalysisLevel": "9.0.200"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
@ -65,7 +65,7 @@
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/9.0.102/PortableRuntimeIdentifierGraph.json"
|
||||
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/9.0.200/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "0XXWvIaAHRU=",
|
||||
"dgSpecHash": "EUX3oFtxQ78=",
|
||||
"success": true,
|
||||
"projectFilePath": "/home/Verde/git/strings_2/strings_2.csproj",
|
||||
"expectedPackageFiles": [],
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.100"
|
||||
"SdkAnalysisLevel": "9.0.200"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
@ -59,7 +59,7 @@
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/9.0.102/PortableRuntimeIdentifierGraph.json"
|
||||
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/9.0.200/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/Verde/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/Verde/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.12.2</NuGetToolVersion>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.13.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/home/Verde/.nuget/packages/" />
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user