Написать программу, которая будет выполнять операции с числами в различных системах счисления - C#

Узнай цену своей работы

Формулировка задачи:

написать программу, которая будет считать: 1100111011(2)+671,24(8) В скобках указанны системы счисления. Посчитать сумму и вывести результат в 16 ричной СС. Я начинал писать, и не получалось. Вот кусок кода:
Листинг программы
  1. static void Main(string[] args)
  2. {
  3. double result = ToDecimal("1100111011", 2, true) + ToDecimal("671,24", 8, false);
  4. string[] resultParts = result.ToString().Split('.');
  5. Console.WriteLine("result : {0:X},{1:X}", int.Parse(resultParts[0]), int.Parse(resultParts[1]));
  6. Console.ReadLine();
  7. }
Ругается на ToDecimal...Так и тем более ответ после нужно произвести в 16 ую систему. Кто сможешь написать код такой сложной штукенции?

Решение задачи: «Написать программу, которая будет выполнять операции с числами в различных системах счисления»

textual
Листинг программы
  1. public static double ToDecimal(string binary, byte notation)
  2.         {
  3.             char[] intPart;
  4.             int counter = 0;
  5.             if (binary.Contains(','))
  6.             {
  7.                 string[] value = binary.Split(',');
  8.                 intPart = value[0].ToArray();
  9.                 char[] realPart = value[1].ToArray();
  10.                 counter = 0;
  11.                 double result = intPart.Reverse().ToList().
  12.                     Select(x => HexNumbersToDecimel(x) * Math.Pow(notation, counter++)).Sum();
  13.                 counter = 0;
  14.                 double y = realPart.Reverse().
  15.                     Select(x => HexNumbersToDecimel(x) * Math.Pow(notation, counter++)).Sum();
  16.                 result += y / Math.Pow(10, y.ToString().Length);
  17.                 return result;
  18.             }
  19.             else
  20.             {
  21.                 intPart = binary.ToArray();
  22.                 counter = 0;
  23.                 return (int)intPart.Reverse().
  24.                     Select(x => HexNumbersToDecimel(x) * Math.Pow(notation, counter++)).Sum();
  25.             }
  26.         }
  27.         private static int HexNumbersToDecimel(char symbol)
  28.         {
  29.             if (char.IsNumber(symbol))
  30.                 return int.Parse(symbol.ToString());
  31.             else
  32.                 switch (char.ToUpper(symbol))
  33.                 {
  34.                     case 'A': return 10;
  35.                         break;
  36.                     case 'B': return 11;
  37.                         break;
  38.                     case 'C': return 12;
  39.                         break;
  40.                     case 'D': return 13;
  41.                         break;
  42.                     case 'E': return 14;
  43.                         break;
  44.                     case 'F': return 15;
  45.                         break;
  46.                 }
  47.             return 0;
  48.         }
  49.  
  50. Это должно быть в классе, чтобы работало.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы