array_funzioni_4/Program.cs
La Programmatrice Verde b70a39dbbe Opzione 3 e 4
2024-12-27 10:20:44 +01:00

180 lines
5.2 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;
for(int i=0; i<dimensione; i++){
for(int j=0; j<dimensione; j++){
if (p_array[j]==p_array[i]+1){
consecutivo1=true;
}
}
}
for(int i=0; i<dimensione; i++){
for(int j=0; j<dimensione; j++){
if (p_array[j]==p_array[i]+2){
consecutivo2=true;
}
}
}
if(consecutivo1&&consecutivo2==true){
ritorno = true;
}
else{
ritorno = false;
}
return ritorno;
}
}