@kirfox

Как выполнять одно только условие?

Здравствуйте, подскажите пожалуйста!

Есть задача:

Создайте функцию task17 с одним параметром $n

Внутри этой функции вам нужно сделать следующее:

1. Заведите переменную: $sum = 0; - сумма чисел делящихся на 5
2. В цикле от 0 до $n (включая) сделайте следующее (должно выполнится только одно из условий):

- если число делится без остатка на 3 – выведите это число, с помощью оператора echo (каждое число на отдельной строке)
- если число делится без остатка на 5 – прибавьте это число к переменной $sum
- если число делится и на 5 и на 3 – то вычтите из $sum единицу

Функция должна вернуть сумму в качестве результата своей работы.

Внимание!
Для переноса на новую строку используйте тег
или константу PHP_EOL. Никакого другого вывода не должно быть.

Для решении задачи запрещено использовать многие другие функции, анонимные функции, преобразование типов, классы, глобальные переменные.

мой код:
<?php

function task17($n){
  $sum = 0;
  for ($i=0; $i <= $n ; $i++) { 

    if ($i % 3 == 0) {
      echo $i . '<br>';
    } 
    elseif ($i % 5 == 0) {
      $sum += $i;
      echo $sum ;
    }
    elseif ($i % 3 == 0 && $i % 5 == 0) {
      $sum = --$sum;
      echo $sum . '<br>';
    }

  };
};

task17(15);

?>


Не могу понять как сделать, чтобы выполнялось только одно из условий. По итогу он выводит всё. Я понимаю, что это из за цикла или может я не понял условия задачи. Вывожу я всё для себя, посмотреть что выводится. Подскажите в том ли направлении я вообще.
  • Вопрос задан
  • 1951 просмотр
Решения вопроса 1
DevMan
@DevMan
на каждой итерации должно выполнится только одно из условий, а не для всего цикла.
в целом вы решили правильно, только последнее условие должно быть первым и забыли вернуть значение.

function task17( $n ) {
	$sum = 0;
	for( $i = 0; $i <= $n; $i ++ ) {
		if( $i % 3 == 0 && $i % 5 == 0 ) {
			$sum -= 1;
		}
		elseif( $i % 3 == 0 ) {
			echo $i . '<br>';
		}
		elseif( $i % 5 == 0 ) {
			$sum += $i;
		}
	}
	return $sum;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
flapflapjack
@flapflapjack
на треть я прав
Первым должно проверяться условие %3 %5 ибо остальные два условия уже включены в него. А далее - остальное. Ибо если %3 %5 не выполняется, следовательно остается либо %3 либо %5 либо ничего вообще.

Вы в задаче должны были не только реализовать вопрос, но и понять, в каком порядке его запрограммировать. У вас удалось первое, но не удалось второе.

<?php

function task17($n){
  $sum = 0;
  for ($i=0; $i <= $n ; $i++) { 

if ($i % 3 == 0 && $i % 5 == 0) {
      $sum = --$sum;
      echo $sum . '<br>';
       break; //или exit, точно не скажу в данном состоянии
    }

    elseif ($i % 3 == 0) {
      echo $i . '<br>';
    } 
    elseif ($i % 5 == 0) {
      $sum += $i;
      echo $sum ;
    }
}
};

task17(15);

?>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы