insertion_sort/Program.cs
2025-01-31 09:33:00 +01:00

118 lines
3.9 KiB
C#

namespace insertion_sort;
class Program {
const int dimensione = 10;
static void Main(string[] args) {
Console.Clear();
//dichiarazione e inizializzazione variabili
int scelta;
int[] array = null;
bool opzione1 = false, opzione3 = false;
//menu
do {
Console.WriteLine("Scegliere un'opzione:");
Console.WriteLine("1. Crea array casuale");
Console.WriteLine("2. Mostra array casuale");
Console.WriteLine("3. Riordina array casuale");
Console.WriteLine("4. Mostra array ordinato");
Console.WriteLine("0. Esci");
Console.Write("Scelta: ");
scelta = Convert.ToInt32(Console.ReadLine());
switch (scelta) {
case 0:
Console.Clear();
break;
case 1:
Console.Clear();
array = CreaArrayCasuale();
opzione1 = true;
Pausa();
break;
case 2:
Console.Clear();
if (opzione1) {
StampaArray(array);
}
else {
Console.WriteLine("Bisogna creare l'array casuale prima di mostrarlo");
}
Pausa();
break;
case 3:
Console.Clear();
if (opzione1) {
OrdinaArray(array);
}
else {
Console.WriteLine("Bisogna creare l'array casuale prima di ordinarlo");
}
opzione3 = true;
Pausa();
break;
case 4:
Console.Clear();
if (opzione3) {
StampaArray(array);
}
else {
Console.WriteLine("Bisogna creare l'array casuale prima di mostrarlo");
}
Pausa();
break;
default:
Console.WriteLine("Errore: scelta non valida");
Pausa();
break;
}
}
while (scelta != 0);
}
static void Pausa() {
Console.WriteLine("Premere un tasto per continuare. . .");
Console.ReadKey();
Console.Clear();
}
static void StampaArray(int[] p_insieme) {
for (int j = 0; j < p_insieme.Length; j++) {
Console.WriteLine("Elemento " + j + ": " + p_insieme[j]);
}
}
static int[] CreaArrayCasuale() {
//dichiarazione e inizializzazione variabili
const int maxLength = 10;
Random caso = new Random();
int[] ritorno = new int[dimensione];
for (int i = 0; i < dimensione; i++) {
ritorno[i] = caso.Next(maxLength);//per ogni posizione di ritorno assegno un valore a caso (metodo Random.Next)
}
return ritorno;
}
static void OrdinaArray(int[] p_array) {
int k, temp;
StampaArray(p_array);
Console.WriteLine();
Console.WriteLine()
for (int i = 0; i < dimensione; i++) {
k = dimensione - i;
do {
if (!(k == dimensione || k < 0 || k - 1 < 0)) {
if (p_array[k] < p_array[k - 1]) {
temp = p_array[k];
p_array[k] = p_array[k - 1];
p_array[k - 1] = temp;
Console.WriteLine("Scambio. . .");
StampaArray(p_array);
Console.WriteLine();
Console.WriteLine();
}
}
k--;
}
while (k > 0);
}
}
}