Задача №5. Дано некоторое число длиной от 1 до 5 цифр - вывести его цифры в обратном порядке.

Скажите как сделать так, чтобы цикл сам знал когда завершится?
Задача взята из этого списка.


<?php

$h = 3567;
$i = 0;

while ($i < 4) {
       echo $h % 10, "<br>";
       $h = $h / 10;
       $i++;
}

?>


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

melisa's picture

Чтобы понять, какое условие поставить, добавьте в Ваш цикл строку

echo " теперь h = " . $h . "<br>";

и отслеживайте, что происходит с числом

vedro-compota's picture

Поставьте ссылку на список задач)

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

sid's picture

Примечание: интересно здесь цикл работает.
Спасибо за подсказки.


<?php

function Chislo_anverse($Chislo)
{
    
 while($Chislo > 1) {
       echo $Chislo % 10, "<br>";
       $Chislo /= 10;
 }
}

$Chislo = 358934;
Chislo_anverse($Chislo);

?>

melisa's picture

1) Если передать ф-ции, например, число 1000, цикл отработает неверно
2) Скорректируйте отступы внутри блоков.

sid's picture

Теперь работает исправно.


<?php

function Chislo_anverse($Chislo)
{
    
    while($Chislo >= 1) {
         echo $Chislo % 10, "<br>";
         $Chislo /= 10;
    } 
}
 
$Chislo = 1000;
Chislo_anverse($Chislo);

?>


Если передать функции Chislo_anverse ноль, то она ничего не выведет.

sid's picture

как это можно обойти?

Если передать функции Chislo_anverse ноль, то она ничего не выведет.

vedro-compota's picture

как это можно обойти?

в крайнем случае можно просто написать отдельное if-условие.
Так же можно изменить условие цикла -- почему вы проверяете именно то, что оно больше единицы?

Также можно использовать другой цикл (что может быть лучше?) -- например с пост-условием, Сначала в теле делить число на 10 -- и выводить что-то (это поможет при одной цифре как раз) -- а потом уже делать проверку.

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

sid's picture

Пример с пост-условием.


<?php

function anvers_numb($a)
{
    do {
        echo $a % 10, "<br>";
        $a /= 10; 
    }while ($a <= -1 || $a >= 1);
}

$a = 0;
anvers_numb($a);

?>

sid's picture

Отдельное if-условие.


<?php

function anvers_numb($a)
{
    if($a == 0) {
      echo $a, "<br>";
    }
        while ($a <= -1 || $a >= 1) {
              echo $a % 10, "<br>";
              $a /= 10;
        }
}

$a = -54;
anvers_numb($a);

?>

sid's picture

С этим пока не складывается.
Так же можно изменить условие цикла -- почему вы проверяете именно то, что оно больше единицы?