277 lines
9.9 KiB
C#
277 lines
9.9 KiB
C#
namespace ripasso4;
|
|
|
|
class Program {
|
|
const int dimensione = 5;
|
|
static void Main(string[] args) {
|
|
Console.Clear();
|
|
//dichiarazione e inizializzazione variabili
|
|
int scelta;
|
|
string[] arrayNomi = new string[dimensione], arrayCognomi = new string[dimensione], arrayNumeri;
|
|
|
|
//menu
|
|
do {
|
|
Console.WriteLine("Scegliere un'opzione:");
|
|
Console.WriteLine("1. Pari a sinistra, dispari a destra");
|
|
Console.WriteLine("2. Array paralleli");
|
|
Console.WriteLine("3. Inversione");
|
|
Console.WriteLine("0. Esci");
|
|
Console.Write("Scelta: ");
|
|
scelta = Convert.ToInt32(Console.ReadLine());
|
|
|
|
|
|
switch (scelta) {
|
|
case 0:
|
|
Console.Clear();
|
|
break;
|
|
case 1:
|
|
Console.Clear();
|
|
StampaArray(CreaVettoreOrdinato());
|
|
Pausa();
|
|
break;
|
|
case 2:
|
|
Console.Clear();
|
|
CreaVettoriParalleli(arrayCognomi, arrayNomi);
|
|
ControllaVettoriParalleli(arrayCognomi, arrayNomi);
|
|
CercaAlunni(arrayCognomi, arrayNomi);
|
|
Pausa();
|
|
break;
|
|
case 3:
|
|
Console.Clear();
|
|
arrayNumeri = CreaVettore();
|
|
Console.Clear();
|
|
Console.WriteLine("Array originale:");
|
|
StampaArray(arrayNumeri);
|
|
Console.WriteLine();
|
|
Console.WriteLine("Array invertito: ");
|
|
StampaArray(RibaltaVettore(arrayNumeri));
|
|
Pausa();
|
|
break;
|
|
default:
|
|
Console.WriteLine("Errore: scelta non valida");
|
|
Pausa();
|
|
break;
|
|
}
|
|
}
|
|
while (scelta != 0);
|
|
}
|
|
static void StampaArray(string[] p_insieme) {
|
|
for (int j = 0; j < p_insieme.Length; j++) {
|
|
Console.WriteLine("Elemento " + j + ": " + p_insieme[j]);
|
|
}
|
|
}
|
|
static string[] CreaVettoreOrdinato() {
|
|
int[] arrayCasuale = CreaArrayCasuale();
|
|
string[] ritorno = new string[dimensione];
|
|
int indiceDecrescenteArray = dimensione - 1, indiceCrescenteArray = 0;
|
|
for (int i = 0; i < dimensione; i++) {
|
|
if (arrayCasuale[i] % 2 != 0) {
|
|
ritorno[indiceDecrescenteArray] = Convert.ToString(arrayCasuale[i]);
|
|
indiceDecrescenteArray--;
|
|
}
|
|
else {
|
|
ritorno[indiceCrescenteArray] = Convert.ToString(arrayCasuale[i]);
|
|
indiceCrescenteArray++;
|
|
}
|
|
}
|
|
return ritorno;
|
|
|
|
}
|
|
static int[] CreaArrayCasuale() {
|
|
//dichiarazione e inizializzazione variabili
|
|
Random caso = new Random();
|
|
int[] ritorno = new int[dimensione];
|
|
|
|
for (int i = 0; i < dimensione; i++) {
|
|
ritorno[i] = caso.Next(11);//per ogni posizione di ritorno assegno un valore a caso (metodo Random.Next)
|
|
}
|
|
return ritorno;
|
|
}
|
|
static void Pausa() {
|
|
Console.WriteLine("Premere un tasto per continuare. . .");
|
|
Console.ReadKey();
|
|
Console.Clear();
|
|
}
|
|
static void CreaVettoriParalleli(string[] p_arrayCognomi, string[] p_arrayNomi) {
|
|
|
|
for (int i = 0; i < dimensione; i++) { //Inserimento nomi e cognomi
|
|
Console.Clear();
|
|
|
|
//Inserimento cognomi
|
|
Console.Write("Inserire il cognome dell'alunno n." + (i + 1) + ": ");
|
|
p_arrayCognomi[i] = Console.ReadLine();
|
|
|
|
Console.Clear();
|
|
|
|
//Inserimento nomi
|
|
Console.Write("Inserire il nome dell'alunno n." + (i + 1) + ": ");
|
|
p_arrayNomi[i] = Console.ReadLine();
|
|
}
|
|
}
|
|
static void ControllaVettoriParalleli(string[] p_arrayCognomi, string[] p_arrayNomi) {
|
|
string correzione;
|
|
uint elemento;
|
|
char scelta;
|
|
|
|
do {
|
|
Console.Clear();
|
|
Console.WriteLine("Cognomi: ");
|
|
StampaArray(p_arrayCognomi);
|
|
Console.WriteLine();
|
|
Console.WriteLine("Nomi: ");
|
|
StampaArray(p_arrayNomi);
|
|
|
|
Console.Write("È corretto? [S/N] ");
|
|
scelta = Convert.ToChar(Console.ReadLine());
|
|
|
|
switch (scelta) {
|
|
case 'S':
|
|
break;
|
|
|
|
case 'N':
|
|
Console.Clear();
|
|
|
|
do {
|
|
Console.Write("Modificare la lista dei nomi o dei cognomi? ");
|
|
correzione = Console.ReadLine();
|
|
|
|
if (correzione != "nomi" && correzione != "cognomi") {
|
|
Console.WriteLine("Opzione non valida. Inserire [nomi] o [cognomi].");
|
|
Pausa();
|
|
}
|
|
}
|
|
while (correzione != "nomi" && correzione != "cognomi");
|
|
|
|
Console.Clear();
|
|
|
|
|
|
|
|
do {
|
|
switch (correzione) {
|
|
case "nomi":
|
|
StampaArray(p_arrayNomi);
|
|
break;
|
|
case "cognomi":
|
|
StampaArray(p_arrayCognomi);
|
|
break;
|
|
}
|
|
Console.WriteLine();
|
|
|
|
Console.Write("Digitare il numero dell'elemento sbagliato: ");
|
|
elemento = Convert.ToUInt32(Console.ReadLine());
|
|
|
|
if (elemento < 0 || elemento > dimensione - 1) {
|
|
Console.WriteLine("Numero di elemento non valido, inserire un numero compreso tra 0 e " + (dimensione - 1));
|
|
Pausa();
|
|
}
|
|
}
|
|
while (elemento < 0 || elemento > dimensione - 1);
|
|
|
|
Console.Clear();
|
|
|
|
switch (correzione) {
|
|
case "nomi":
|
|
Console.WriteLine("Elemento precedente: " + p_arrayNomi[elemento]);
|
|
break;
|
|
case "cognomi":
|
|
Console.WriteLine("Elemento precedente: " + p_arrayCognomi[elemento]);
|
|
break;
|
|
}
|
|
Console.WriteLine();
|
|
|
|
Console.Write("Inserire il nuovo elemento: ");
|
|
switch (correzione) {
|
|
case "nomi":
|
|
p_arrayNomi[elemento] = Console.ReadLine();
|
|
break;
|
|
case "cognomi":
|
|
p_arrayCognomi[elemento] = Console.ReadLine();
|
|
break;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
Console.WriteLine("Opzione non valida, inserire [S] o [N]");
|
|
Pausa();
|
|
break;
|
|
}
|
|
}
|
|
while (scelta != 'S');
|
|
}
|
|
static void CercaAlunni(string[] p_arrayCognomi, string[] p_arrayNomi) {
|
|
Console.Clear();
|
|
|
|
//dichiarazione e inizializzazione variabili
|
|
string daCercare;
|
|
int i = 0, indiceOccorrenze = 0;
|
|
bool daCercareEsiste = false;
|
|
|
|
const int valoreNonValido = -1;
|
|
int[] luogoOccorrenze = new int[dimensione + 1];
|
|
for (int j = 0; j < dimensione + 1; j++) {
|
|
luogoOccorrenze[j] = valoreNonValido;
|
|
}
|
|
|
|
|
|
do {
|
|
Console.Write("Per quale nome cercare? ");
|
|
daCercare = Console.ReadLine();
|
|
i = 0;
|
|
for (; i < dimensione; i++) {
|
|
if (p_arrayNomi[i] == daCercare) { //se daCercare è un nome che esiste
|
|
daCercareEsiste = true;
|
|
luogoOccorrenze[indiceOccorrenze] = i;
|
|
indiceOccorrenze++;
|
|
}
|
|
}
|
|
|
|
if (!daCercareEsiste) {
|
|
Console.WriteLine("Il nome inserito non è stato trovato nella lista dei nomi, inserire un nome valido e riprovare");
|
|
Pausa();
|
|
}
|
|
}
|
|
while (!daCercareEsiste);
|
|
|
|
Console.Clear();
|
|
|
|
Console.WriteLine("I cognomi che corrispondono al nome " + daCercare + " sono:");
|
|
for (int j = 0; luogoOccorrenze[j] != valoreNonValido; j++) {
|
|
Console.WriteLine(p_arrayCognomi[luogoOccorrenze[j]]);
|
|
}
|
|
}
|
|
static string[] CreaVettore() {
|
|
string[] ritorno = new string[dimensione];
|
|
int i = 0, inputNumero;
|
|
string input;
|
|
const int minValue = 10, maxValue = 100;
|
|
|
|
do {
|
|
Console.Clear();
|
|
Console.WriteLine("Hai ancora " + (dimensione - i) + " numeri da poter inserire");
|
|
Console.Write("Inserire un numero ([q] per uscire): ");
|
|
input = Console.ReadLine(); //non posso ancora fare il catch dell'eccezione se viene inserito un qualcosa che non sia un numero o q
|
|
if (input != "q") {
|
|
inputNumero = Convert.ToInt32(input);
|
|
if (inputNumero < minValue || inputNumero > maxValue) {
|
|
Console.WriteLine("Il numero deve essere compreso tra " + minValue + " e " + maxValue);
|
|
Pausa();
|
|
}
|
|
else {
|
|
ritorno[i] = Convert.ToString(inputNumero);
|
|
i++;
|
|
}
|
|
}
|
|
}
|
|
while (input != "q" && i < dimensione);
|
|
return ritorno;
|
|
}
|
|
static string[] RibaltaVettore(string[] p_array) {
|
|
string[] ritorno = new string[dimensione];
|
|
int j = dimensione - 1;
|
|
|
|
for (int i = 0; i < dimensione; i++) {
|
|
ritorno[i] = p_array[j];//il primo elemento di ritorno è l'ultimo di p_array e così via, i e j variano in opposto
|
|
j--;
|
|
}
|
|
return ritorno;
|
|
}
|
|
} |