diff --git a/Program.cs b/Program.cs index 0486583..bfdcdd6 100644 --- a/Program.cs +++ b/Program.cs @@ -5,12 +5,14 @@ namespace matrix_4; class Program { static void Main(string[] args) { Console.Clear(); - int scelta, lineaAutobus, lineaAutobus2, fermataAutobus, fermataAutobus2, conto; + int scelta, lineaAutobus, lineaAutobus2, fermataAutobus, fermataAutobus2, conto, j = 0; (string[], string[], bool[,]) configurazione = Configurazione(); string[] fermateAutobus = configurazione.Item1, lineeAutobus = configurazione.Item2; + int[] lineePartenza = new int[fermateAutobus.Length], lineeDestinazione = new int[fermateAutobus.Length], coincidenze = new int[fermateAutobus.Length]; bool[,] corrispondenzaLineaFermata = configurazione.Item3; bool nullo = true; - + Array.Fill(lineePartenza, int.MaxValue); + Array.Fill(lineeDestinazione, int.MaxValue); do { Console.WriteLine("Inserire un'opzione:"); @@ -87,7 +89,7 @@ class Program { nullo = false; } } - + if (nullo) { Console.WriteLine("Nessuna"); } @@ -106,7 +108,7 @@ class Program { fermataAutobus2 = SelezionaElementoArray(fermateAutobus); Console.Clear(); if (fermataAutobus != fermataAutobus2) { - Console.WriteLine($"Tra le fermate {fermataAutobus} e {fermataAutobus2} passano le linee"); + Console.WriteLine($"Tra le fermate {fermateAutobus[fermataAutobus]} e {fermateAutobus[fermataAutobus2]} passano le linee"); for (int i = 0; i < corrispondenzaLineaFermata.GetLength(1); i++) { if (corrispondenzaLineaFermata[fermataAutobus, i] && corrispondenzaLineaFermata[fermataAutobus2, i]) { Console.WriteLine(lineeAutobus[i]); @@ -116,6 +118,48 @@ class Program { if (nullo) { Console.WriteLine("Nessuna"); + Console.WriteLine("Quindi si può:"); + for (int i = 0; i < corrispondenzaLineaFermata.GetLength(0) && j < lineePartenza.Length; i++) { + if (corrispondenzaLineaFermata[i, fermataAutobus]) { + lineePartenza[j] = i; + j++; + } + } + for (int i = 0; i < corrispondenzaLineaFermata.GetLength(0) && j < corrispondenzaLineaFermata.GetLength(1); i++) { + if (corrispondenzaLineaFermata[fermataAutobus2, i]) { + lineeDestinazione[j] = i; + j++; + } + } + + lineePartenza = InsertionSort(lineePartenza); + lineeDestinazione = InsertionSort(lineeDestinazione); + j = 0; + MostraMatrice(corrispondenzaLineaFermata); + for (int k = 0; k < corrispondenzaLineaFermata.GetLength(1); k++) { + for (int i = 0; i < corrispondenzaLineaFermata.GetLength(0); i++) { + if (!(lineePartenza[i] == int.MaxValue || lineeDestinazione[k] == int.MaxValue)) { + while (j < corrispondenzaLineaFermata.GetLength(0)) { + Console.WriteLine($"Debug: corrispondenzaLineaFermata[{j}, {lineePartenza[i]}]: {corrispondenzaLineaFermata[j, lineePartenza[i]]}"); + Console.WriteLine($"Debug: corrispondenzaLineaFermata[{j}, {lineeDestinazione[k]}]: {corrispondenzaLineaFermata[j, lineeDestinazione[k]]}"); + if (corrispondenzaLineaFermata[j, lineePartenza[i]] == corrispondenzaLineaFermata[j, lineeDestinazione[k]]) { + coincidenze[k] = i; + } + j++; + } + j = 0; + } + } + } + Console.WriteLine("Debug: lineePartenza:"); + StampaArray(lineePartenza); + Console.WriteLine("Debug: lineeDestinazione:"); + StampaArray(lineeDestinazione); + Console.WriteLine("Debug: coincidenze:"); + StampaArray(coincidenze); + for (int i = 0; i < corrispondenzaLineaFermata.GetLength(1); i++) { + Console.WriteLine($"prendere la linea {lineeAutobus[lineePartenza[i]]}, cambiare alla fermata {fermateAutobus[coincidenze[i]]} e proseguire sulla linea {lineeAutobus[lineeDestinazione[i]]}"); + } } } else { @@ -189,7 +233,6 @@ class Program { while (r < dimensione1) { while (c < dimensione2) { - Console.WriteLine($"Debug: r: {r}\tc: {c}\t dimensione1: {dimensione1}\t dimensione2: {dimensione2}"); Console.WriteLine($"La linea {ritorno.Item2[c]} si ferma alla fermata {ritorno.Item1[r]}?"); Console.WriteLine("[0] Sì\t[1] No"); scelta = Convert.ToInt32(Console.ReadLine()); @@ -222,6 +265,12 @@ class Program { } } + static void StampaArray(int[] p_array) { + for (int j = 0; j < p_array.Length; j++) { + Console.WriteLine("Elemento " + j + ": " + p_array[j]); + } + } + static void StampaArraySoloElementi(string[] p_array) { for (int j = 0; j < p_array.Length; j++) { Console.WriteLine(p_array[j]); @@ -243,13 +292,20 @@ class Program { } - static void MostraLineeFermata(bool[,] p_matrice, int p_indiceFermata) { - bool[] ritorno = new bool[p_matrice.GetLength(1)]; - for (int i = 0; i < p_matrice.GetLength(1); i++) { - if (p_matrice[p_indiceFermata, i]) { - ritorno[i] = true; + static int[] InsertionSort(int[] p_array) { //implementazione ufficiale copiata da Classroom + int i, j; + int temp; + + for (i = 1; i < p_array.Length; i++) { + temp = p_array[i]; + j = i - 1; + while (j >= 0 && p_array[j] > temp) { + p_array[j + 1] = p_array[j]; + j--; } + p_array[j + 1] = temp; } + return p_array; } } diff --git a/bin/Debug/net9.0/matrix_4.dll b/bin/Debug/net9.0/matrix_4.dll index 368e696..d0b0ac5 100644 Binary files a/bin/Debug/net9.0/matrix_4.dll and b/bin/Debug/net9.0/matrix_4.dll differ diff --git a/bin/Debug/net9.0/matrix_4.pdb b/bin/Debug/net9.0/matrix_4.pdb index ccce407..005f03f 100644 Binary files a/bin/Debug/net9.0/matrix_4.pdb and b/bin/Debug/net9.0/matrix_4.pdb differ diff --git a/obj/Debug/net9.0/matrix_4.AssemblyInfo.cs b/obj/Debug/net9.0/matrix_4.AssemblyInfo.cs index 65e9b79..c71df77 100644 --- a/obj/Debug/net9.0/matrix_4.AssemblyInfo.cs +++ b/obj/Debug/net9.0/matrix_4.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("matrix_4")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c2792696c81e301c72c709b90a11629ec17f7a51")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+020fa829cf0e4b4eebb7bd2e979136a2388ac622")] [assembly: System.Reflection.AssemblyProductAttribute("matrix_4")] [assembly: System.Reflection.AssemblyTitleAttribute("matrix_4")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net9.0/matrix_4.AssemblyInfoInputs.cache b/obj/Debug/net9.0/matrix_4.AssemblyInfoInputs.cache index aa8c505..404edf2 100644 --- a/obj/Debug/net9.0/matrix_4.AssemblyInfoInputs.cache +++ b/obj/Debug/net9.0/matrix_4.AssemblyInfoInputs.cache @@ -1 +1 @@ -ed3107c54af0a051d8bb6245e1a705a87813e83c096ae66e5dec0cb1db26b3f8 +1c44fa622f05b47c7aafc5c43a5a0350ea57aee1982b35c834c80f97f6c4e7c2 diff --git a/obj/Debug/net9.0/matrix_4.dll b/obj/Debug/net9.0/matrix_4.dll index 368e696..d0b0ac5 100644 Binary files a/obj/Debug/net9.0/matrix_4.dll and b/obj/Debug/net9.0/matrix_4.dll differ diff --git a/obj/Debug/net9.0/matrix_4.pdb b/obj/Debug/net9.0/matrix_4.pdb index ccce407..005f03f 100644 Binary files a/obj/Debug/net9.0/matrix_4.pdb and b/obj/Debug/net9.0/matrix_4.pdb differ diff --git a/obj/Debug/net9.0/ref/matrix_4.dll b/obj/Debug/net9.0/ref/matrix_4.dll index af186db..b6231f6 100644 Binary files a/obj/Debug/net9.0/ref/matrix_4.dll and b/obj/Debug/net9.0/ref/matrix_4.dll differ diff --git a/obj/Debug/net9.0/refint/matrix_4.dll b/obj/Debug/net9.0/refint/matrix_4.dll index af186db..b6231f6 100644 Binary files a/obj/Debug/net9.0/refint/matrix_4.dll and b/obj/Debug/net9.0/refint/matrix_4.dll differ