namespace Verifica_funzioni; class Program { static void Main(string[] args) { //Dichiarazione e inizializzazione variabili int scelta = 0; double raggio = 0; double area = 0; double numero = 0; int numeroIntero = 0; double divisibilePerDieci = 0; int i = 0; int k = 0; int dimensioneDiagonale = 0; uint decToBin = 0; bool multiploDiDieci = false; const double pi = 3.14; const int costanteIntera = 100; //menù do { Console.WriteLine("Scegliere un'opzione: "); Console.WriteLine("1. Area cerchio"); Console.WriteLine("2. Controllo numeri interi"); Console.WriteLine("3. Fermati finché non arrivi a 100"); Console.WriteLine("4. Multipli di 10"); Console.WriteLine("5. Diagonale"); Console.WriteLine("6. Decimale -> Binario (Big Endian)"); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); scelta = Convert.ToInt32(Console.ReadLine()); switch (scelta) { case 0: break; case 1: do { Console.Write("Inserire la misura del raggio: "); raggio = Convert.ToDouble(Console.ReadLine()); if (raggio <= 0)//il raggio zero o negativo non esiste { Console.WriteLine("Il raggio non può essere né negativo né zero."); } } while (raggio <= 0); //calcolo area area = raggio * raggio * pi; //output Console.WriteLine("L'area del cerchio misura " + area); break; case 2: //input Console.Write("Inserire un numero: "); numero = Convert.ToDouble(Console.ReadLine()); //output condizionale if (numero < 0) { Console.WriteLine("numero negativo"); } else if (numero == 0) { Console.WriteLine("hai inserito zero"); } else { Console.WriteLine("numero positivo"); } break; case 3: //input do { Console.WriteLine("Inserire un numero maggiore di " + costanteIntera + " per terminare."); Console.Write("Numero: "); numeroIntero = Convert.ToInt32(Console.ReadLine()); } while (numeroIntero <= costanteIntera);//controllo che non si voglia terminare break; case 4: //input Console.Write("Quanti numeri vuoi inserire? "); i = Convert.ToInt32(Console.ReadLine()); for (; i > 0; i--)//faccio inserire quanti numeri vuole l'utente { Console.Write("Inserire un numero: "); divisibilePerDieci = Convert.ToInt32(Console.ReadLine()); multiploDiDieci = DivisibilePerDieci(divisibilePerDieci); if (multiploDiDieci == true) { k++;//conto tutti i numeri divisibili per 10 } } //output Console.WriteLine("I numeri inseriti divisibili per dieci sono " +k ); break; case 5: //input Console.Write("Quanto deve essere larga la diagonale? "); dimensioneDiagonale = Convert.ToInt32(Console.ReadLine()); //output Diagonale(dimensioneDiagonale); break; case 6: //input Console.WriteLine("NOTA: il numero binario deve essere letto da destra verso sinistra");//visto che non posso fare la procedura al contrario in modo che funzioni per ogni numero, uso quella standard e avviso l'utente Console.Write("Inserire un numero intero positivo: "); decToBin=Convert.ToUInt32(Console.ReadLine()); //output Console.Write(decToBin + " in binario vale "); DecToBin(decToBin); Console.WriteLine(); break; default: Console.WriteLine("Opzione non valida."); break; } } while (scelta != 0); } static bool DivisibilePerDieci(double p_num) { //Dichiarazione e inizializzazione variabili const double divisore = 10; bool ritorno; //verifico se p_num è divisibile per 10 o no if (p_num % divisore == 0) { ritorno = true; } else { ritorno = false; } //ritorno return ritorno; } static void Diagonale(int p_dimensione) { //Dichiarazione e inizializzazione variabili int j = 0; //stampa degli zeri prima dell'uno for (int i = p_dimensione; i > 0; i--) { for (j = 0; j < i-1; j++) { Console.Write("0"); } //stampa dell'uno Console.Write("1"); //stampa degli zeri dopo l'uno for (; j < p_dimensione-1 ; j++) { Console.Write("0"); } Console.WriteLine();//a capo dopo ogni riga } } static void DecToBin(uint p_num) { //Dichiarazione e inizializzazione variabili uint resto = 0; const uint costanteIntera = 2; //calcolo del resto while (p_num != 0) { resto = p_num % costanteIntera; p_num = p_num / costanteIntera; //output Console.Write(resto); } } }