Otabek_96
@Otabek_96
Программист

Почему в этом коде математический расчет выйдет некорректно напр при n = 301?

Может здесь проблема с конвертаций?
string n = Console.ReadLine();
            string m = "";
            for (int i = n.Length - 1; i >= 0; i--)
            {
                m = m + n[i];
            }
            Console.WriteLine("Введенное число в обратном порядке: " + m + "\n");
            Console.WriteLine("Результат должно было бы так если n = 103(т.е обратный вид 301):");
            Console.WriteLine("1 * (8^0) = " + (1 * Math.Pow(8, 0)));
            Console.WriteLine("0 * (8^1) = " + (0 * Math.Pow(8, 1)));
            Console.WriteLine("3 * (8^2) = " + (3 * Math.Pow(8, 2)));
            Console.WriteLine("Cумма = 1 + 0 + 192 = 193 - корректный ответ");
            double s = 0, s1 = 0;
            Console.WriteLine("\nНачало цикла:\n");
            for (int i = 0; i < m.Length; i++)
            {
                Console.Write(i + " цикл = ");
                s1 = Convert.ToInt64(m[i]) * Math.Pow(8, i);
                Console.WriteLine(s1);
                s = s + (Convert.ToInt32(m[i]) * Math.Pow(8, i));
            }
            Console.WriteLine("Cумма = " + s +" - ответ некорректно");
            Console.ReadKey();
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
Вводимое число записывается по десятичной системе счисления.
08315d27b37abac11a88fdc5c51b915104176a69
Чтобы новое число было в обратном порядке, нужно не просто складывать, а ещё умножать на основание в степени с учётом позиции в числе. Таким образом, нужна ещё дополнительная переменная-счётчик для позиции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы