Opzione 5 parte 2, con tanti porci annessi :D (T_T)

This commit is contained in:
La Programmatrice Verde 2025-03-14 20:26:27 +01:00
parent 020fa829cf
commit e9d93e3eae
9 changed files with 68 additions and 12 deletions

View File

@ -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;
}
}

Binary file not shown.

Binary file not shown.

View File

@ -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")]

View File

@ -1 +1 @@
ed3107c54af0a051d8bb6245e1a705a87813e83c096ae66e5dec0cb1db26b3f8
1c44fa622f05b47c7aafc5c43a5a0350ea57aee1982b35c834c80f97f6c4e7c2

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.