Написать программу, которая будет выполнять операции с числами в различных системах счисления - C#
Формулировка задачи:
написать программу, которая будет считать: 1100111011(2)+671,24(8)
В скобках указанны системы счисления.
Посчитать сумму и вывести результат в 16 ричной СС.
Я начинал писать, и не получалось.
Вот кусок кода:
Ругается на ToDecimal...Так и тем более ответ после нужно произвести в 16 ую систему.
Кто сможешь написать код такой сложной штукенции?
static void Main(string[] args)
{
double result = ToDecimal("1100111011", 2, true) + ToDecimal("671,24", 8, false);
string[] resultParts = result.ToString().Split('.');
Console.WriteLine("result : {0:X},{1:X}", int.Parse(resultParts[0]), int.Parse(resultParts[1]));
Console.ReadLine();
}Решение задачи: «Написать программу, которая будет выполнять операции с числами в различных системах счисления»
textual
Листинг программы
public static double ToDecimal(string binary, byte notation)
{
char[] intPart;
int counter = 0;
if (binary.Contains(','))
{
string[] value = binary.Split(',');
intPart = value[0].ToArray();
char[] realPart = value[1].ToArray();
counter = 0;
double result = intPart.Reverse().ToList().
Select(x => HexNumbersToDecimel(x) * Math.Pow(notation, counter++)).Sum();
counter = 0;
double y = realPart.Reverse().
Select(x => HexNumbersToDecimel(x) * Math.Pow(notation, counter++)).Sum();
result += y / Math.Pow(10, y.ToString().Length);
return result;
}
else
{
intPart = binary.ToArray();
counter = 0;
return (int)intPart.Reverse().
Select(x => HexNumbersToDecimel(x) * Math.Pow(notation, counter++)).Sum();
}
}
private static int HexNumbersToDecimel(char symbol)
{
if (char.IsNumber(symbol))
return int.Parse(symbol.ToString());
else
switch (char.ToUpper(symbol))
{
case 'A': return 10;
break;
case 'B': return 11;
break;
case 'C': return 12;
break;
case 'D': return 13;
break;
case 'E': return 14;
break;
case 'F': return 15;
break;
}
return 0;
}
Это должно быть в классе, чтобы работало.