118 lines
3.9 KiB
C#
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);
|
|
}
|
|
}
|
|
} |