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

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

В общем, я вот что слепил:
<?php

  $num = 1679;

  if ($num > 9)
  {
    $numOne = $num % 10;                                      // 9
    $modOne = ($num - $numOne) / 10;                          // 167

    if ($modOne > 9)
    {
      $numTwo = $modOne % 10;                                 // 7
      $modTwo = ($modOne - $numTwo % 10) / 10;                // 16

      if ($modTwo > 9)
      {
        $numThree = $modTwo % 10;                             // 6
        $modThree = ($modTwo - $numThree % 10) / 10;          // 1

        $numPen = $numOne + $numTwo + $numThree + $modThree;  // 23

        if ($numPen > 9)
        {
          $numFour = $numPen % 10;                            // 3
          $modFour = ($numPen - $numFour % 10) / 10;          // 2

          $numFin = $numFour + $modFour;                      // 5
        }
      }
    }
  }

  echo $numFin;

?>

Наверное, лучше циклом эту задачу решить? Как? Можно ли сделать её универсальной?
  • Вопрос задан
  • 277 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 2
@look2009
$arr1 = str_split($num);
Крути массив и складывай.
Только проверку is_numeric делай. Если из вне входящий параметр.
Может точки будут если is_numeric проверку делать, тогда регулярка в помощь.

Лучше 1 функцию написать и крутить её до тех пор пока однозначное число не будет.
Ответ написан
sergiks
@sergiks Куратор тега PHP
♬♬
Сделать из числа массив цифр: str_split(), сложить все элементы массива: array_sum()
Итого:

$num = 1679;
$sum = array_sum( str_split( $num));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ravshanium
@ravshanium
аналитик, веб-программист
если нужно сложить цифры, то проще наверное сделать так:
<?php

  $num = 1679;

  $numFin = '';

 preg_match_all('/(\w)/', $num, $m);
 
for ($i = 0; $i < count($m[0]); $i++){
	
	$d = ($i == count($m[0])-1)?'':'+';
   echo $m[0][$i].$d;
  $numFin +=$m[0][$i];

}
echo '=';
echo $numFin;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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