Перевод числа в десятичную систему счисления: исправить код - C#

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

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

есть скажем число A9B из системы исчисления D. Хотим мы это число перевести в 10 систему. Должно получиться 11+117+1690=1718 а получается 3096, т.к при переводе из букв в цифры получается 10911. вот код
Console.WriteLine("If your number or base more than 10 you should use this designation \nA=10 B=11 C=12 D=13 E=14 F=15");
            Console.WriteLine("Please input base");
            string base1 = (Console.ReadLine());//вводим основание первоначальной системы
            int base2 = 0;
            if (base1[0] == 65)
            {
                base2 = 10;
            }
            if (base1[0] == 66)
            {
                base2 = 11;
            }
            if (base1[0] == 67)
            {
                base2 = 12;
            }
            if (base1[0] == 68)
            {
                base2 = 13;
            }
            if (base1[0] == 69)
            {
                base2 = 14;
            }
            if (base1[0] == 70)
            {
                base2 = 15;
            }
            if (base1[0] > 49 && base1[0] <= 57)
            {
                base2 = Convert.ToInt32(base1);
            }
            Console.WriteLine("Please, input number");// вводим число этой системы
            string numberstr = Console.ReadLine();
            string s5 = "";
            for (int i = 0; i < numberstr.Length; i++)
            {
                if (numberstr[i] == 65)
                {
                    s5 = numberstr.Replace("A", "10");
                    numberstr = s5;
                }
                if (numberstr[i] == 66)
                {
                    s5 = numberstr.Replace("B", "11");
                    numberstr = s5;
                }
                if (numberstr[i] == 67)
                {
                    s5 = numberstr.Replace("C", "12");
                    numberstr = s5;
                }
                if (numberstr[i] == 68)
                {
                    s5 = numberstr.Replace("D", "13");
                    numberstr = s5;
                }
                if (numberstr[i] == 69)
                {
                    s5 = numberstr.Replace("E", "14");
                    numberstr = s5;
                }
                if (numberstr[i] == 70)
                {
                    s5 = numberstr.Replace("F", "15");
                    numberstr = s5;
                }
            }
 
            decimal number = Convert.ToDecimal(numberstr); 
            int numberint = Convert.ToInt32(number);//отделяем от всего числа только целую
            string convertive = Convert.ToString(number);//переводим все число в строку
            double result = 0;
            double level = 0;// значение степени
            decimal y = number - numberint;//отделение дробной от целой
            double doublepart = Convert.ToDouble(y);//конвертируем дробную часть в тип double
            string str = Convert.ToString(y);//конвертируем дробную часть в тип string
            int z = str.Length;// находим длину
            if (base2 > 10 || base2 < 10)// если число не в 10-ой системе, то сначала переводим в 10-у.
            {
                while (numberint != 0)// перевод целой части
                {
                    int lastnumeral = (int)((numberint % 10) * Math.Pow(base2, level));
                    result += lastnumeral;
                    numberint /= 10;
                    level++;
                }
                double res = doublepart * Math.Pow(10, z - 2);
                level = 0 - (z - 2);
                while (res != 0)// перевод дробной части
                {
                    double lastnumeral = ((res % 10) * Math.Pow(base2, level));
                    result += lastnumeral;
                    res = (int)(res / 10);
                    level++;
                }
            }
 
            Console.WriteLine("Summ={0}", result);
            Console.ReadKey();
не 3096 а 30096

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

textual
Листинг программы
namespace MyNamespace
{
    //здесь вставьте код, который приведен по ссылке
 
    class MyApp
    {
        static void Main()
        {
            string answer = NSConverter.FromTo("A4B", 19, 3);
            Console.WriteLine(answer);
            Console.ReadLine();
        }
    }
}

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


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

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

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