Учебные задачи PHP. Задача 6

Решение для задачи из списка

<?php 
/**
 * Решение для задачи №6 из курса PHP
 * 
 * Дано некоторое число длиной от 1 до 5 символов, 
 * вывести все его "нечётные" цифры в обратном порядке (аналогично предыдущей задаче), 
 * если же таких цифр не найдёт, вывести сообщение "Нечетных цифр не обнаружено!"
 */
$num = rand(1, 99999);// Получаем исходное число
$res = reversOddNumber($num);// Получение результата работы функции

echo $num." =<br>".$res;

function reversOddNumber($int) {
  // На вход подаётся число, на выходе строка
  $out = [];
  $iteration = strlen($int);
  $odd = 0;//счётчик нечётных чисел
  while($iteration != 0){//получаем массив заполненный цифрами числа в обратном порядке
    $out[] = $int % 10;
    $int /= 10;
    $iteration--;
  }
  foreach($out as $i => $value){//перебор массива
    if(($value % 2) != 0){
      $odd++;//считаем нечётные числа
      continue;
    }else{
      unset($out[$i]);// удаляем чётные числа
    }
  }
  if($odd == 0){
    $out = 'Нечётных цифр не обнаруженно';
  }else{
    $out = implode('<br>', $out);
  }
  return $out;
}
?>

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

Приведите ниже альтернативное решение без массива и без использования strlen($int), попробуйте поработать со значением чисто как с числом.

_____________
матфак вгу и остальная классика =)

toyrik's picture

Приведите ниже альтернативное решение без массива и без использования strlen($int), попробуйте поработать со значением чисто как с числом.

<?php 
/**
 * Решение для задачи №6 из курса PHP
 * 
 * Дано некоторое число длиной от 1 до 5 символов, 
 * вывести все его "нечётные" цифры в обратном порядке (аналогично предыдущей задаче), 
 * если же таких цифр не найдёт, вывести сообщение "Нечетных цифр не обнаружено!"
 * 
 * UPD Приведите альтернативное решение без массива и без использования strlen($int), 
 * попробуйте поработать со значением чисто как с числом.
 */
$num = rand(1, 99999);// Получаем исходное число

echo $num." =<br>";
reverseOddNumber($num);

function reverseOddNumber($int)
{
  $odd = 0;// Счетчик нечётных цифр
  while ($int > 1) {
    if ((($int % 10) % 2) != 0) {
      echo $int % 10;
      $odd++;
    } 
    $int /=10;
  }
  if ($odd == 0) {
    echo 'Нечётных цифр не обнаружено';
  }
}
?>
vedro-compota's picture

решение засчитано

_____________
матфак вгу и остальная классика =)