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

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

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

есть скажем число A9B из системы исчисления D. Хотим мы это число перевести в 10 систему. Должно получиться 11+117+1690=1718 а получается 3096, т.к при переводе из букв в цифры получается 10911. вот код
Листинг программы
  1. 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");
  2. Console.WriteLine("Please input base");
  3. string base1 = (Console.ReadLine());//вводим основание первоначальной системы
  4. int base2 = 0;
  5. if (base1[0] == 65)
  6. {
  7. base2 = 10;
  8. }
  9. if (base1[0] == 66)
  10. {
  11. base2 = 11;
  12. }
  13. if (base1[0] == 67)
  14. {
  15. base2 = 12;
  16. }
  17. if (base1[0] == 68)
  18. {
  19. base2 = 13;
  20. }
  21. if (base1[0] == 69)
  22. {
  23. base2 = 14;
  24. }
  25. if (base1[0] == 70)
  26. {
  27. base2 = 15;
  28. }
  29. if (base1[0] > 49 && base1[0] <= 57)
  30. {
  31. base2 = Convert.ToInt32(base1);
  32. }
  33. Console.WriteLine("Please, input number");// вводим число этой системы
  34. string numberstr = Console.ReadLine();
  35. string s5 = "";
  36. for (int i = 0; i < numberstr.Length; i++)
  37. {
  38. if (numberstr[i] == 65)
  39. {
  40. s5 = numberstr.Replace("A", "10");
  41. numberstr = s5;
  42. }
  43. if (numberstr[i] == 66)
  44. {
  45. s5 = numberstr.Replace("B", "11");
  46. numberstr = s5;
  47. }
  48. if (numberstr[i] == 67)
  49. {
  50. s5 = numberstr.Replace("C", "12");
  51. numberstr = s5;
  52. }
  53. if (numberstr[i] == 68)
  54. {
  55. s5 = numberstr.Replace("D", "13");
  56. numberstr = s5;
  57. }
  58. if (numberstr[i] == 69)
  59. {
  60. s5 = numberstr.Replace("E", "14");
  61. numberstr = s5;
  62. }
  63. if (numberstr[i] == 70)
  64. {
  65. s5 = numberstr.Replace("F", "15");
  66. numberstr = s5;
  67. }
  68. }
  69. decimal number = Convert.ToDecimal(numberstr);
  70. int numberint = Convert.ToInt32(number);//отделяем от всего числа только целую
  71. string convertive = Convert.ToString(number);//переводим все число в строку
  72. double result = 0;
  73. double level = 0;// значение степени
  74. decimal y = number - numberint;//отделение дробной от целой
  75. double doublepart = Convert.ToDouble(y);//конвертируем дробную часть в тип double
  76. string str = Convert.ToString(y);//конвертируем дробную часть в тип string
  77. int z = str.Length;// находим длину
  78. if (base2 > 10 || base2 < 10)// если число не в 10-ой системе, то сначала переводим в 10-у.
  79. {
  80. while (numberint != 0)// перевод целой части
  81. {
  82. int lastnumeral = (int)((numberint % 10) * Math.Pow(base2, level));
  83. result += lastnumeral;
  84. numberint /= 10;
  85. level++;
  86. }
  87. double res = doublepart * Math.Pow(10, z - 2);
  88. level = 0 - (z - 2);
  89. while (res != 0)// перевод дробной части
  90. {
  91. double lastnumeral = ((res % 10) * Math.Pow(base2, level));
  92. result += lastnumeral;
  93. res = (int)(res / 10);
  94. level++;
  95. }
  96. }
  97. Console.WriteLine("Summ={0}", result);
  98. Console.ReadKey();
не 3096 а 30096

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

textual
Листинг программы
  1. namespace MyNamespace
  2. {
  3.     //здесь вставьте код, который приведен по ссылке
  4.  
  5.     class MyApp
  6.     {
  7.         static void Main()
  8.         {
  9.             string answer = NSConverter.FromTo("A4B", 19, 3);
  10.             Console.WriteLine(answer);
  11.             Console.ReadLine();
  12.         }
  13.     }
  14. }

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


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

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

11   голосов , оценка 3.818 из 5

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

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

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