Перевести числа в десятичную систему счисления, сложить и вывести в шестнадцатиричном виде - C#

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

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

Переведите следующие числа в десятичную систему счисления: а) 1100111011(2); б) 10000000111(2); в) 10110101,1(2); г) 100000110,10101(2); д) 671,24(8); е) 41A,6(16). Сложите числа под номером а) и д). Результат представьте в шестнадцатеричной форме Будьте добры, люди, напишите консольное приложение, которое это производит.

Решение задачи: «Перевести числа в десятичную систему счисления, сложить и вывести в шестнадцатиричном виде»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Notations
{
    class Program
    {
        static void Main(string[] args)
        {
            double result = ToDecimal("1100111011", 2) + ToDecimal("671,24", 8);
            string[] resultParts = result.ToString().Split('.');
 
            Console.WriteLine("result : {0:X},{1:X}", int.Parse(resultParts[0]), int.Parse(resultParts[1]));
            Console.ReadLine();
        }
 
        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;
        }
    }
}

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


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

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

13   голосов , оценка 3.846 из 5
Похожие ответы