Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace UF2PR2Solucio
- {
- class Program
- {
- static void Main(string[] args)
- {
- int opcio = 0;
- bool acabar = false;
- while (!acabar)
- {
- Console.Clear();
- opcio = menuPrincipal();
- switch (opcio)
- {
- case 1:
- decimalBinari();
- break;
- case 2:
- binariDecimal();
- break;
- case 3:
- decimalHexadecimal();
- break;
- case 4:
- HexadecimalDecimal();
- break;
- case 5:
- binariHexadecimal();
- break;
- case 6:
- hexadecimalBinari();
- break;
- case 7:
- qualsevol();
- break;
- case 8:
- ajuda();
- break;
- case 9:
- acabar = true;
- break;
- default:
- Console.WriteLine("nEsperava un numero de l'u al 9");
- break;
- }
- if (!acabar) espera();
- }
- }
- public static void decimalBinari()
- {
- String numero;
- Console.WriteLine("Entra un numero decimal: ");
- numero = Console.ReadLine();
- //Comprovacio base
- if (esBase(10, numero)) Console.WriteLine(Conversio(10, 2, numero));
- else Console.WriteLine("Esperava un numero decimal");
- }
- public static void binariDecimal()
- {
- String numero;
- Console.WriteLine("Entra un numero binari: ");
- numero = Console.ReadLine();
- //Comprovacio base
- if (esBase(2, numero)) Console.WriteLine(Conversio(2, 10, numero));
- else Console.WriteLine("Esperava un numero binari");
- }
- public static void HexadecimalDecimal()
- {
- String numero;
- Console.WriteLine("Entra un numero hexadecimal: ");
- numero = Console.ReadLine();
- //Comprovacio base
- if (esBase(16, numero)) Console.WriteLine(convertirABaseDeu(16, numero));
- else Console.WriteLine("Esperava un numero hexadecimal");
- }
- public static void decimalHexadecimal()
- {
- String numero;
- Console.WriteLine("Entra un numero decimal: ");
- numero = Console.ReadLine();
- //Comprovacio base
- if (esBase(10, numero)) Console.WriteLine(Conversio(10, 16, numero));
- else Console.WriteLine("Esperava un numero decimal");
- }
- public static void binariHexadecimal()
- {
- String numero;
- Console.WriteLine("Entra un numero decimal: ");
- numero = Console.ReadLine();
- //Comprovacio base
- if (esBase(10, numero)) Console.WriteLine(Conversio(2, 16, numero));
- else Console.WriteLine("Esperava un numero binari");
- }
- public static void hexadecimalBinari()
- {
- String numero;
- Console.WriteLine("Entra un numero decimal: ");
- numero = Console.ReadLine();
- //Comprovacio base
- if (esBase(10, numero)) Console.WriteLine(Conversio(16, 2, numero));
- else Console.WriteLine("Esperava un numero hexadecimal");
- }
- public static void qualsevol()
- {//menu 7
- String numero;
- int baseInicial, baseDesti;
- Console.WriteLine("Entra un numero: ");
- numero = Console.ReadLine();
- Console.WriteLine("Entra la base en que esta aquest nombre: ");
- baseInicial = int.Parse(Console.ReadLine());
- Console.WriteLine("Entra la base a la que el vols convertir: ");
- baseDesti = int.Parse(Console.ReadLine());
- //Comprovacio base
- if (esBase(baseInicial, numero)) Console.WriteLine(Conversio(baseInicial, baseDesti, numero));
- else Console.WriteLine("El nombre introduit no és de la base especificada");
- }
- public static String Conversio(int baseInicial, int baseDesti, String Numero)
- {
- String resultat;
- int resultatB10;
- //Primer convertim de base inicial a base 10
- resultatB10 = convertirABaseDeu(baseInicial, Numero);
- //Despres convertim de base 10 a base desti
- resultat = convertirDeBaseDeu(resultatB10, baseDesti);
- return "hola soc la funcio conversio";
- }
- public static String convertirDeBaseDeu(int numero, int baseDesti)
- {
- String resultat = Conversio(10, baseDesti, numero.ToString());
- //Comprovacio base
- if (esBase(10, numero.ToString())) Console.WriteLine(Conversio(10, baseDesti, numero.ToString()));
- else Console.WriteLine("Esperava un numero en base 10");
- return resultat;
- }
- public static int convertirABaseDeu(int baseNum, String numero)
- {
- int resultat = 0;
- int llargada;
- int digit;
- int potencia = 0;
- llargada = numero.Length;
- for (int x = llargada - 1; x >= 0; x--)
- {
- digit = (int)Char.GetNumericValue(numero[x]);
- if (digit == -1) digit = Convert.ToInt32(numero[x]) - 55;
- resultat = resultat + (digit * Convert.ToInt32(Math.Pow(baseNum, potencia)));
- potencia++;
- }
- Console.WriteLine("el valor a en decimal es : " + resultat);
- return resultat;
- }
- public static Boolean esBase(int laBase, String numero)
- {
- bool resultat = true;
- foreach (char digit in numero)
- {
- if (!digitPertanyBase(digit, laBase))
- {
- resultat = false;
- break;
- }
- }
- return resultat;
- }
- public static Boolean digitPertanyBase(char digit, int baseNum)
- {
- bool trobat = false;
- char[] simbols = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
- int x = 0;
- do
- {
- if (digit == simbols[x]) trobat = true;
- x++;
- }
- while ((x < baseNum) && (!trobat));
- return trobat;
- }
- public static int menuPrincipal()
- {
- int opcio = 0;
- ConsoleKeyInfo cki;
- escriureMenu();
- cki = Console.ReadKey(true);
- if (Char.IsNumber(cki.KeyChar))
- opcio = Int32.Parse(cki.KeyChar.ToString());
- else opcio = 0;
- return opcio;
- }
- public static void escriureMenu()
- {
- Console.WriteLine("-----------------------------");
- Console.WriteLine("Conversió de bases numèriques");
- Console.WriteLine("-----------------------------");
- Console.WriteLine("1 - Decimal a binari");
- Console.WriteLine("2 - Binari a decimal");
- Console.WriteLine("3 - Decimal a hexadecimal");
- Console.WriteLine("4 - Hexadecimal a decimal");
- Console.WriteLine("5 - Binari a hexadecimal");
- Console.WriteLine("6 - Hexadecimal a binari");
- Console.WriteLine("7 - D'una base a qualsevol altra");
- Console.WriteLine("8 - Ajuda");
- Console.WriteLine("9 - Sortir");
- }
- public static void ajuda()
- {
- Console.Clear();
- Console.WriteLine("Si saps que són les bases numèriques, no et cal gaire ajuda");
- Console.WriteLine("Si tens alguna queixa, pots escriure-la i,quan premis ENTER serà enviada al nostres programadors");
- }
- public static void espera()
- {
- Console.WriteLine("Prem ANY KEY per tornar al menu");
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement