197 lines
5.8 KiB
C#
197 lines
5.8 KiB
C#
namespace array_funzioni_4;
|
|
|
|
class Program
|
|
{
|
|
const int dimensione = 10;
|
|
static void Main(string[] args)
|
|
{
|
|
Console.Clear();
|
|
//dichiarazione e inizializzazione variabili
|
|
int scelta;
|
|
int[] array = new int [dimensione];
|
|
|
|
//menu
|
|
do{
|
|
Console.WriteLine("Scegliere un'opzione:");
|
|
Console.WriteLine("1. Stampa zig zag");
|
|
Console.WriteLine("2. Somma pari dispari");
|
|
Console.WriteLine("3. Array invertito");
|
|
Console.WriteLine("4. Tre consecutivi");
|
|
Console.WriteLine("5. Uno doppio dell'altro");
|
|
Console.WriteLine("0. Esci");
|
|
Console.Write("Scelta: ");
|
|
scelta=Convert.ToInt32(Console.ReadLine());
|
|
|
|
|
|
switch(scelta){
|
|
case 0:
|
|
Console.Clear();
|
|
break;
|
|
case 1:
|
|
Console.Clear();
|
|
StampaArrayZigZag(CreaArrayCasuale());
|
|
Pausa();
|
|
break;
|
|
case 2:
|
|
Console.Clear();
|
|
Console.WriteLine(StampaPariDispari(CreaArrayCasuale()));
|
|
Pausa();
|
|
break;
|
|
case 3:
|
|
Console.Clear();
|
|
StampaArray(InvertiArray(CreaArrayCasuale()));
|
|
Pausa();
|
|
break;
|
|
case 4:
|
|
Console.Clear();
|
|
array = CreaArrayCasuale();
|
|
StampaArray(array);
|
|
if(TreConsecutivi(array)==true){
|
|
Console.WriteLine("Tre valori consecutivi uguali");
|
|
}
|
|
else{
|
|
Console.WriteLine("NO");
|
|
}
|
|
Pausa();
|
|
break;
|
|
case 5:
|
|
Console.Clear();
|
|
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 int[] CreaArray(){
|
|
int[] ritorno=new int[dimensione];
|
|
int i=0;
|
|
string input;
|
|
|
|
do{
|
|
Console.Write("Inserire un numero, massimo " +dimensione+ " numeri ([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"){
|
|
ritorno[i]=Convert.ToInt32(input);
|
|
}
|
|
i++;
|
|
}
|
|
while(input!="q" && i<dimensione);
|
|
return ritorno;
|
|
}
|
|
|
|
static int[] CreaArrayCasuale(){
|
|
Random caso = new Random();
|
|
int[] ritorno=new int[dimensione];
|
|
|
|
for(int i=0; i<dimensione; i++){
|
|
ritorno[i]=caso.Next(1, 4);//sostituire 1, 4 con Int32.MinValue, Int32.MaxValue quando è pronto tutto
|
|
}
|
|
return ritorno;
|
|
}
|
|
|
|
static void StampaArray(int [] p_array) {
|
|
for (int j=0; j<p_array.Length; j++){
|
|
Console.WriteLine("Elemento " +j+ ": " +p_array[j]);
|
|
}
|
|
}
|
|
|
|
static void StampaArrayZigZag(int[] p_array){
|
|
int j=dimensione-1, k=0;
|
|
for (int i=0; i<dimensione; i++){
|
|
Console.Write("Elemento " + i + ": ");
|
|
if(i%2!=0){
|
|
Console.WriteLine(p_array[j]);
|
|
j--;
|
|
}
|
|
else{
|
|
Console.WriteLine(p_array[k]);
|
|
k++;
|
|
}
|
|
}
|
|
}
|
|
|
|
static string StampaPariDispari(int[] p_array){
|
|
int sommaPari=0, sommaDispari=0, i=0;
|
|
string ritorno;
|
|
while(i<dimensione){
|
|
sommaPari=sommaPari+p_array[i];
|
|
i = i + 2;
|
|
}
|
|
i = 1;
|
|
while(i<dimensione){
|
|
sommaDispari=sommaDispari+p_array[i];
|
|
i = i + 2;
|
|
}
|
|
if (sommaPari == sommaDispari){
|
|
ritorno="Pari e dispari uguali";
|
|
}
|
|
else{
|
|
ritorno="Pari e dispari diversi";
|
|
}
|
|
return ritorno;
|
|
}
|
|
|
|
static int[] InvertiArray(int[] p_array){
|
|
int[] ritorno = new int[dimensione];
|
|
int j=dimensione-1;
|
|
|
|
for(int i=0; i<dimensione; i++){
|
|
ritorno[i]=p_array[j];
|
|
j--;
|
|
}
|
|
return ritorno;
|
|
}
|
|
|
|
static bool TreConsecutivi(int[] p_array){
|
|
bool ritorno=false, consecutivo1=false, consecutivo2=false;
|
|
int i=0, j=0;
|
|
|
|
while(consecutivo1 == false && i<dimensione){
|
|
Console.WriteLine("Ciclo " +i);
|
|
while(consecutivo1 == false && j<dimensione){
|
|
if (p_array[j] == p_array[i] + 1){
|
|
consecutivo1 = true;
|
|
}
|
|
Console.WriteLine("j1: " + j);
|
|
j++;
|
|
}
|
|
j = 0;
|
|
Console.WriteLine("i1: " + i);
|
|
i++;
|
|
}
|
|
i = 0;
|
|
j = 0;
|
|
if(consecutivo1==true){
|
|
while(consecutivo2 == false && i<dimensione){
|
|
Console.WriteLine("Ciclo consecutivo 2 " +i);
|
|
while(consecutivo2 == false && j<dimensione){
|
|
if (p_array[j] == p_array[i] + 2){
|
|
consecutivo2 = true;
|
|
}
|
|
Console.WriteLine("j2: " + j);
|
|
j++;
|
|
}
|
|
j = 0;
|
|
i++;
|
|
}
|
|
}
|
|
if(consecutivo1 && consecutivo2 == true){
|
|
ritorno=true;
|
|
}
|
|
else{
|
|
ritorno=false;
|
|
}
|
|
return ritorno;
|
|
}
|
|
}
|