Advertisement
striking

Untitled

Dec 21st, 2013
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.32 KB | None | 0 0
  1. // Write a program to convert from any numeral system of given base s to any other numeral system of base d (2 ≤ s, d ≤  16).
  2.  
  3.  
  4.  
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Numerics;
  8. class ConvertFromAnyToAnyNumSystem
  9. {
  10.     static void Main()
  11.     {
  12.         Console.Write("What numeral system will be your entered number (choose from 2 to 16): ");
  13.         int defaultNumericSystem = int.Parse(Console.ReadLine());
  14.         Console.Write("OK! Now write your number in \"{0}\" numeral system: ", defaultNumericSystem);
  15.         string number = Console.ReadLine();
  16.         Console.Write("Now choose to which numeral system you want to convert it (from 2 to 16) ?: ");
  17.         int wantedSystem = int.Parse(Console.ReadLine());
  18.  
  19.         string decimalResult = AnyNumeralSystemToDecimal(number, defaultNumericSystem);
  20.         string result = ConvertDecimalToAnyOther(decimalResult, wantedSystem);
  21.         Console.WriteLine("The number {0} in \"{1}\" numeral system is = {2}\n", number, wantedSystem, result);
  22.  
  23.     }
  24.  
  25.     static string AnyNumeralSystemToDecimal(string number, int choise)
  26.     {
  27.         int[] numberDigits = new int[number.Length];
  28.         string[] hexDigitsAfterTen = { "A", "B", "C", "D", "E", "F", };
  29.  
  30.         if (choise <= 9)
  31.         {
  32.             for (int i = 0; i < number.Length; i++)
  33.             {
  34.                 numberDigits[i] = (char)(char.GetNumericValue(number[i]));
  35.             }
  36.         }
  37.  
  38.         else
  39.         {
  40.             for (int i = 0; i < number.Length; i++)
  41.             {
  42.                 if (number[i] == 'A' || number[i] == 'a')
  43.                 {
  44.                     numberDigits[i] = 10;
  45.                 }
  46.                 else if (number[i] == 'B' || number[i] == 'b')
  47.                 {
  48.                     numberDigits[i] = 11;
  49.                 }
  50.  
  51.                 else if (number[i] == 'C' || number[i] == 'c')
  52.                 {
  53.                     numberDigits[i] = 12;
  54.                 }
  55.                 else if (number[i] == 'D' || number[i] == 'd')
  56.                 {
  57.                     numberDigits[i] = 13;
  58.                 }
  59.                 else if (number[i] == 'E' || number[i] == 'e')
  60.                 {
  61.                     numberDigits[i] = 14;
  62.                 }
  63.                 else if (number[i] == 'F' || number[i] == 'f')
  64.                 {
  65.                     numberDigits[i] = 15;
  66.                 }
  67.                 else
  68.                 {
  69.                     numberDigits[i] = (char)char.GetNumericValue(number[i]);
  70.                 }
  71.             }
  72.         }
  73.  
  74.         Array.Reverse(numberDigits);
  75.         int holder = 0;
  76.         int result = 0;
  77.  
  78.         for (int i = 0; i < numberDigits.Length; i++)
  79.         {
  80.             holder = numberDigits[i] * ((int)Math.Pow(choise, i));
  81.             result += holder;
  82.         }
  83.         return result.ToString();
  84.     }
  85.  
  86.     static string ConvertDecimalToAnyOther(string decimalNumber, int secondChoise)
  87.     {
  88.         BigInteger decimalNumberConverted = BigInteger.Parse(decimalNumber);
  89.         List<string> convertedNumber = new List<string>();
  90.         int remainder = 0;
  91.  
  92.         if (secondChoise <= 9)
  93.         {
  94.             while (decimalNumberConverted != 0)
  95.             {
  96.                 remainder = (int)(decimalNumberConverted % secondChoise);
  97.                 decimalNumberConverted = decimalNumberConverted / secondChoise;
  98.                 convertedNumber.Add(remainder.ToString());
  99.                 if (decimalNumberConverted == 0)
  100.                 {
  101.                     break;
  102.                 }
  103.             }
  104.             convertedNumber.Reverse();
  105.             string result = "";
  106.             for (int i = 0; i < convertedNumber.Count; i++)
  107.             {
  108.                 result += convertedNumber[i];
  109.             }
  110.             return result;
  111.         }
  112.  
  113.         else
  114.         {
  115.             int[] hexNumbersAfterTen = { 10, 11, 12, 13, 14, 15 };
  116.             List<string> result = new List<string>();
  117.             int holder = 0;
  118.  
  119.             for (int i = 0; i < decimalNumber.Length; i++)
  120.             {
  121.                 holder = (int)(decimalNumberConverted % secondChoise);
  122.                 result.Add(holder.ToString());
  123.                 decimalNumberConverted /= 16;
  124.                 if (holder > 9)
  125.                 {
  126.                     if (result[i] == "10")
  127.                     {
  128.                         result[i] = "A";
  129.                     }
  130.                     else if (result[i] == "11")
  131.                     {
  132.                         result[i] = "B";
  133.                     }
  134.                     else if (result[i] == "12")
  135.                     {
  136.                         result[i] = "C";
  137.                     }
  138.                     else if (result[i] == "13")
  139.                     {
  140.                         result[i] = "D";
  141.                     }
  142.                     else if (result[i] == "14")
  143.                     {
  144.                         result[i] = "E";
  145.                     }
  146.                     else if (result[i] == "15")
  147.                     {
  148.                         result[i] = "F";
  149.                     }
  150.                 }
  151.             }
  152.             result.Reverse();
  153.             decimalNumber = "";
  154.  
  155.             for (int i = 0; i < result.Count; i++)
  156.             {
  157.                 decimalNumber += result[i];
  158.             }
  159.             return decimalNumber;
  160.         }
  161.     }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement