Advertisement
stefanpu

Additional Input methods

Feb 14th, 2013
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.79 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace _7.SToD
  7. {
  8.     class SToD
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Console.Write("Enter s=?\b");
  13.             int s = int.Parse(Console.ReadLine());
  14.             Console.Write("Enter d=?\b");
  15.             int d = int.Parse(Console.ReadLine());
  16.             if (s==2 && d == 10)
  17.             {
  18.                 BinToDec();
  19.             }
  20.             else if (s == 2 && d == 16)
  21.             {
  22.                 BinToHex();
  23.             }
  24.             else if (s == 10 && d == 2)
  25.             {
  26.                 DecToBin();
  27.             }
  28.             else if (s == 10 && d == 16)
  29.             {
  30.                 DecToHex();
  31.             }
  32.             else if (s==16 && d == 10)
  33.             {
  34.                 HexToDec();
  35.             }
  36.             else if(s == 16 && d == 2)
  37.             {
  38.                 HexToBin();
  39.             }
  40.         }
  41.  
  42.         private static void BinToDec()
  43.         {
  44.             string binNumber = InputNumberAsString();
  45.  
  46.             double dec = new int();
  47.             char[] bin = binNumber.ToCharArray();
  48.             for (int i = bin.Length - 1; i >= 0; i--)
  49.             {
  50.                 if (bin[i] != '0')
  51.                 {
  52.                     dec += Math.Pow(2, i);
  53.                 }
  54.             }
  55.             Console.WriteLine(dec);
  56.         }
  57.  
  58.         //Първия метод за методите,в които се въвежда число в 16-на бройна система
  59.         private static string InputNumberAsString()
  60.         {
  61.             Console.Write("Enter number to convert:");
  62.             string number = Console.ReadLine();
  63.             return number;
  64.         }
  65.  
  66.         private static void BinToHex()
  67.         {
  68.             //Въвеждането е изкарано в отделен метод. Така няма нужда да преписваш един и
  69.             //същи код постоянно.
  70.             string binNumber = InputNumberAsString();
  71.             string result = "";
  72.  
  73.             for (int i = 0; i < binNumber.Length; i += 4)
  74.             {
  75.                 switch (binNumber.Substring(i, 4))
  76.                 {
  77.                     case "0000":
  78.                         result += "0";
  79.                         break;
  80.                     case "0001":
  81.                         result += "1";
  82.                         break;
  83.                     case "0010":
  84.                         result += "2";
  85.                         break;
  86.                     case "0011":
  87.                         result += "3";
  88.                         break;
  89.                     case "0100":
  90.                         result += "4";
  91.                         break;
  92.                     case "0101":
  93.                         result += "5";
  94.                         break;
  95.                     case "0110":
  96.                         result += "6";
  97.                         break;
  98.                     case "0111":
  99.                         result += "";
  100.                         break;
  101.                     case "1000":
  102.                         result += "8";
  103.                         break;
  104.                     case "1001":
  105.                         result += "9";
  106.                         break;
  107.                     case "1010":
  108.                         result += "A";
  109.                         break;
  110.                     case "1011":
  111.                         result += "B";
  112.                         break;
  113.                     case "1100":
  114.                         result += "C";
  115.                         break;
  116.                     case "1101":
  117.                         result += "D";
  118.                         break;
  119.                     case "1110":
  120.                         result += "E";
  121.                         break;
  122.                     case "1111":
  123.                         result += "F";
  124.                         break;
  125.                     default:
  126.                         result += "";
  127.                         break;
  128.                 }
  129.             }
  130.             Console.WriteLine(result);
  131.         }
  132.  
  133.         private static void DecToBin()
  134.         {
  135.             //Това е вторият метод, но може и само един метод а " парсването да извършваш тук"
  136.             int num = InputNumber();
  137.             StringBuilder result = new StringBuilder();
  138.             int counter = 0;
  139.             int testNum = num;
  140.             while (testNum != 0)
  141.             {
  142.                 testNum = testNum >> counter;
  143.                 counter++;
  144.             }
  145.             while (counter >= 0)
  146.             {
  147.  
  148.                 result.Append((num & (1 << counter)) >> counter);
  149.                 counter--;
  150.             }
  151.             result.Remove(0, 1);
  152.             Console.WriteLine(result);
  153.         }
  154.  
  155.         private static void DecToHex()
  156.         {
  157.             int num = InputNumber();
  158.             StringBuilder hexNum = new StringBuilder();
  159.             while (num > 1)
  160.             {
  161.                 int temp = num % 16;
  162.                 if (temp > 9)
  163.                 {
  164.                     switch (temp)
  165.                     {
  166.                         case 10:
  167.                             hexNum.Append('A');
  168.                             break;
  169.                         case 11:
  170.                             hexNum.Append('B');
  171.                             break;
  172.                         case 12:
  173.                             hexNum.Append('C');
  174.                             break;
  175.                         case 13:
  176.                             hexNum.Append('D');
  177.                             break;
  178.                         case 14:
  179.                             hexNum.Append('E');
  180.                             break;
  181.                         case 15:
  182.                             hexNum.Append('F');
  183.                             break;
  184.                     }
  185.                 }
  186.                 else
  187.                 {
  188.                     hexNum.Append(temp);
  189.                 }
  190.                 num /= 16;
  191.             }
  192.             for (int i = hexNum.Length - 1; i >= 0; i--)
  193.             {
  194.                 Console.Write(hexNum[i]);
  195.             }
  196.         }
  197.  
  198.         //Втория метод - са число в 10-на бройна система
  199.         private static int InputNumber()
  200.         {
  201.             Console.Write("Enter number to convert:");
  202.             int num = int.Parse(Console.ReadLine());
  203.             return num;
  204.         }
  205.  
  206.         private static void HexToDec()
  207.         {
  208.             string hexNumber = InputNumberAsString();
  209.             int power = hexNumber.Length - 1;
  210.             int digit = 0;
  211.             double result = 0;
  212.  
  213.             for (int i = 0; i < hexNumber.Length; i++)
  214.             {
  215.                 switch (hexNumber[i])
  216.                 {
  217.                     case 'A':
  218.                         digit = 10;
  219.                         break;
  220.                     case 'B':
  221.                         digit = 11;
  222.                         break;
  223.                     case 'C':
  224.                         digit = 12;
  225.                         break;
  226.                     case 'D':
  227.                         digit = 13;
  228.                         break;
  229.                     case 'E':
  230.                         digit = 14;
  231.                         break;
  232.                     case 'F':
  233.                         digit = 15;
  234.                         break;
  235.                     default:
  236.                         digit = int.Parse(hexNumber[i].ToString());
  237.                         break;
  238.                 }
  239.                 result += digit * Math.Pow(16, power);
  240.                 power--;
  241.             }
  242.  
  243.             Console.WriteLine(result);
  244.         }
  245.  
  246.         private static void HexToBin()
  247.         {
  248.             string hexNumber = InputNumberAsString();
  249.             string result = "";
  250.             for (int i = 0; i < hexNumber.Length; i++)
  251.             {
  252.                 switch (hexNumber.Substring(i, 1))
  253.                 {
  254.                     case "0":
  255.                         result += "0000";
  256.                         break;
  257.                     case "1":
  258.                         result += "0001";
  259.                         break;
  260.                     case "2":
  261.                         result += "0010";
  262.                         break;
  263.                     case "3":
  264.                         result += "0011";
  265.                         break;
  266.                     case "4":
  267.                         result += "0100";
  268.                         break;
  269.                     case "5":
  270.                         result += "0101";
  271.                         break;
  272.                     case "6":
  273.                         result += "0110";
  274.                         break;
  275.                     case "7":
  276.                         result += "0111";
  277.                         break;
  278.                     case "8":
  279.                         result += "1000";
  280.                         break;
  281.                     case "9":
  282.                         result += "1001";
  283.                         break;
  284.                     case "A":
  285.                         result += "1010";
  286.                         break;
  287.                     case "B":
  288.                         result += "1011";
  289.                         break;
  290.                     case "C":
  291.                         result += "1100";
  292.                         break;
  293.                     case "D":
  294.                         result += "1101";
  295.                         break;
  296.                     case "E":
  297.                         result += "1110";
  298.                         break;
  299.                     case "F":
  300.                         result += "1111";
  301.                         break;
  302.                     default:
  303.                         result += "";
  304.                         break;
  305.                 }
  306.             }
  307.             Console.WriteLine(result.TrimStart(' ', '0'));
  308.         }
  309.     }
  310. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement