Задать вопрос
@MonsterAndrew

Как поменять порядок цифр в многозначом числе?

Дано многозначное число N. Надо переделать его так, чтобы сперва в том же порядке были его чётные цифры, а потом нечётные. Порядок цифр должен сохраниться. Например, 12345 -> 24135
  • Вопрос задан
  • 1787 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro
frontend developer
Бегаем циклом по числу, деля его на 10 на каждой итерации, пока число не уменьшится до нуля.
Таким образом пробежим по всем разрядам, начиная с младшего.
Разряд (степень десятки) будем сохранять отдельно для четных и нечетных чисел.
Также по отдельности будем суммировать четные и нечетные разряды.
На каждой итерации получаем значение разряда (это остаток от деления на 10)
Если цифра нечетная, умножаем на текущую степень и суммируем с нечетными числами, иначе то же самое с четными.
По окончанию цикла у нас будет зафиксирована разрядность получившегося нечетного числа (нечетное число у нас по условию будет в младших разрядах результат). Умножаем четное число на десятку в этой степени и суммируем с нечетным числом.
Профит!

Наверное не очень понятно объясняю. Покажу реализацию на javascript:

код
let number = 12345;
let resultEven = 0;
let resultOdd = 0;
let nEven = 0; // разрядность числа (нечетные числа)
let nOdd = 0; // разрядность числа (четные числа)

while (number > 0) {
  let digit = number % 10;
  if (digit % 2 !== 0) {
    resultEven += digit * Math.pow(10, nEven++);
  } else {
    resultOdd += digit * Math.pow(10, nOdd++);
  }
  number = Math.floor(number / 10);
}

let result = resultEven + resultOdd * Math.pow(10, nEven);
Ответ написан
Комментировать
Сначала выделяешь числа %1000, %100, %10, единицы. Эти числа в массив, и меняешь зеркально элементы массива.
Ответ написан
Ваш ответ на вопрос

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

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