Перевод числа в десятичную систему счисления: исправить код - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д