Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- /*
- * 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).
- */
- namespace ConvertFromAnyToAny
- {
- class ConvertFromAnyToAny
- {
- static void Main()
- {
- //Заб.: можеш да създадеш метод InputData(), в който да вкараш методите
- // InputNumeralSystems и InputNumber, но не съм сигурен, че това е добра идея
- //защото се добавя още едно ниво на абстракция.
- byte s;
- byte d;
- InputNumeralSystems(out s, out d);
- //Отделен метод за числото, който върши само това - въвежда число под формата
- //на стринг.
- string number = InputNumberAsString();
- // Виж как number.ToUpper() е извън InputNumberAsString()
- number = number.ToUpper();
- int decNumber = ToDec(number, s);
- List<char> convertedNumber = FromDec(decNumber, d);
- //Трябва да изкараш принтирането на конвертираното число извън метода FromDec.
- //В идеалният случай един метод трябва да върши едно нещо и това нещо да се разбира
- //от името му. Добър пример за това е ToDec (макар че, както вече ти споменах, ху-
- //баво е да избягваш съкращения в именуването)
- PrintConvertedNumber(convertedNumber);
- }
- private static string InputNumberAsString()
- {
- Console.Write("Please enter the number: ");
- string number = Console.ReadLine();
- return number;
- }
- private static void InputNumeralSystems(out byte s, out byte d)
- {
- Console.Write("Please enter s: ");
- s = byte.Parse(Console.ReadLine());
- Console.Write("Please enter d: ");
- d = byte.Parse(Console.ReadLine());
- }
- static int ToDec(string number, byte s)
- {
- char[] hexValues = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
- int decNumber = 0;
- for (int i = number.Length - 1, power = 0; i >= 0; i--, power++)
- {
- for (int j = 0; j < s; j++)
- {
- if (number[i] == hexValues[j])
- {
- decNumber += (int)Math.Pow(s, power) * j;
- }
- }
- }
- return decNumber;
- }
- static List<char> FromDec(int decNumber, int d)
- {
- char[] hexValues = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
- List<char> newDigits = new List<char>();
- while (decNumber > 0)
- {
- newDigits.Add(hexValues[decNumber % d]);
- decNumber /= d;
- }
- return newDigits;
- }
- private static void PrintConvertedNumber(List<char> newDigits)
- {
- Console.Write("The converted representation of the number is: ");
- for (int i = newDigits.Count - 1; i >= 0; i--)
- {
- Console.Write(newDigits[i]);
- }
- Console.WriteLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement