Advertisement
SHAMMY1

Untitled

Mar 4th, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.82 KB | None | 0 0
  1. //Problem 7. One system to any other
  2.  
  3. //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).
  4.  
  5. using System;
  6. using System.Text;
  7.  
  8. class OneSystemToAny
  9. {
  10.     static void Main()
  11.     {
  12.         string task = "Problem 7. One system to any other\n\nWrite a program to convert from any numeral system of given base s to any\nother numeral system of base d (2 ≤ s, d ≤ 16).\n";
  13.  
  14.         string separator = new string('*', Console.WindowWidth);
  15.  
  16.         Console.WriteLine(task);
  17.         Console.WriteLine(separator);
  18.  
  19.         Console.Write("Enter base to convert from: ");
  20.         uint fromBase = uint.Parse(Console.ReadLine());
  21.  
  22.         Console.Write("Enter base to convert to: ");
  23.         uint toBase = uint.Parse(Console.ReadLine());
  24.  
  25.         Console.WriteLine("Enter positive number: ");
  26.         string number = Console.ReadLine();
  27.  
  28.         Console.WriteLine("\nNumber in {0} base: {1}",toBase, ConvertAnyToAny(number,fromBase,toBase));
  29.     }
  30.  
  31.     private static string ConvertAnyToAny(string number, uint fromBase, uint toBase)
  32.     {
  33.         return DecimalToAny(AnyToDecimal(number, fromBase), toBase);
  34.     }
  35.  
  36.     private static ulong AnyToDecimal(string number, uint baseSystem)
  37.     {
  38.         ulong result = 0;
  39.  
  40.         for (int i = number.Length - 1; i >= 0; i--)
  41.         {
  42.             uint CurrentNumber = (uint)(char.IsDigit(number[i]) ? number[i] - '0': number[i] - 'A' + 10);
  43.             int pow = number.Length - i - 1;
  44.             result += CurrentNumber * (ulong)Math.Pow(baseSystem, pow);
  45.         }
  46.  
  47.         return result;
  48.     }
  49.  
  50.     private static string DecimalToAny(ulong number, uint baseSystem)
  51.     {
  52.         StringBuilder result = new StringBuilder();
  53.  
  54.         do
  55.         {
  56.             int numberToAdd = (int)(number % baseSystem);
  57.             result.Insert(0, (char)(numberToAdd <= 9 ? numberToAdd + '0': 'A' + numberToAdd - 10));
  58.             number /= baseSystem;
  59.         } while (number > 0);
  60.  
  61.         return result.ToString();
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement