Задача №6.

Дано некоторое число длиной от 1 до 5 символов, вывести все его "нечётные" цифры в обратном порядке (аналогично предыдущей задаче), если же таких цифр не найдёт, вывести сообщение "Нечетных цифр не обнаружено!"
Задача из этого списка.

<?php

function an_chis($a)
{
$sum = 0;
$wsum = 0;
    
    do{
        if($a == 0) {
          echo $a, "<br>"; 
        }
        elseif($a % 2 != 0) {
              echo $a % 10, "<br>";
        }
        else {
             $wsum++;//счетчик для нечетных.
        }
        
        $sum++;//счетчик итераций.
        $a /= 10;
        
        }while ($a <= -1 || $a >= 1);

             if($wsum == $sum || $a == 0) {
               echo "Нечетных чисел не обнаружено!";
             }
}

$a = 54634328;  
an_chis($a);

?>

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

melisa's picture

  1. "0" считается чётным числом, поэтому это условие нужно убрать:
    if($a == 0) {
              echo $a; 
            }
  2. В строке 16 у Вас неверный комментарий:
     $wsum++;//счетчик для нечетных.

    В действительности, \$wsum считает количество чётных чисел

  3. В качестве ключевых слов лучше было бы указывать что-то по существу решения, например, "вывод цифр числа в обратном порядке", "поиск нечётных цифр числа", а также редкие ф-ции/операторы, которые Вы использовали в коде, например, "do while"

            if($wsum == $sum || $a == 0) {
               echo "Нечетных чисел не обнаружено!";
            }

можно заменить на

            if($wsum == $sum) {
               echo "Нечетных чисел не обнаружено!";
            }
sid's picture

Исправил был немного не внимателен, спасибо за поправку.


<?php

function vivod_nechet_chisel($a)
{
$sum = 0;
$wsum = 0;
    
    do{
        if($a % 2 != 0) {
          echo $a % 10, "<br>";
        }
        else {
             $wsum++;//счетчик для четных чисел.
        }
        
        $sum++;//счетчик итераций.
        $a /= 10;
        
       }while ($a <= -1 || $a >= 1);

             if($wsum == $sum) {
               echo "Нечетных чисел не обнаружено!";
             }
}

$a = 141;  
vivod_nechet_chisel($a);

?>



Нормально. Можно ещё упростить немного.

<?php
 
function vivod_nechet_chisel($a)
{
    $wsum = 0;
     
    do {
        if($a % 2 != 0) {
            echo $a % 10, "<br>";
            $wsum++;    //  счетчик для нечётных чисел
        }
        
        $a /= 10;
         
    } while ($a <= -1 || $a >= 1);
 
    if ($wsum == 0) {
        echo "Нечетных цифр не обнаружено!<br>";
    }
}
 
$a = 14293871;  
vivod_nechet_chisel($a);
 
?>
sid's picture

Спасибо, сам пока не замечаю такие детали.